fix(oracle): SYS.INFO iese din SYSTEM + job de purjare + diagnostic spatiu clienti

SYS.INFO e log de aplicatie (SYS.pINFO din AUTH_PACK scrie ~7 randuri la fiecare
conectare, ~13.500 randuri / ~2 MB pe luna) si nimic din baza nu-l citeste. Creat
de installer in tablespace-ul SYSTEM si nepurjat niciodata, a umplut SYSTEM la doi
clienti si a oprit actualizarea cu ORA-01653 - eroarea apare pe orice script,
pentru ca AUTH_PACK scrie acolo la conectare.

  SIGMA      03.08.2026 - ff_2026_07_29_02_COMUN_TVA11 picat pe MARCU
  AUTOMOTIVE 08.08.2026 - 552.581 randuri / 80 MB, SYSTEM cu 5 MB liberi

Installer:
- sys-objects.sql: SYS.INFO (tabela + segment LOB) se creeaza in tablespace-ul
  ROA, cu fallback pe SYSTEM daca ROA inca nu exista
- scheduler-jobs.sql: job nou SYS.SYSINFO_PURJARE_ZILNIC, zilnic 03:30, retentie
  90 zile, stergere in transe de 10.000 randuri; creat ENABLED, pentru ca nu are
  nimic de configurat iar uitat dezactivat reproduce chiar problema pe care o
  rezolva. In schema SYS: privilegiile ANY nu se aplica pe obiectele SYS cat timp
  O7_DICTIONARY_ACCESSIBILITY=FALSE
- uninstall-roa.sql: dezinstalarea sterge si jobul
- 00-INSTALL-ORACLE-XE.md / -SE.md: pas post-instalare pentru plafonul SYSTEM
  (maxsize 2000M) si mutarea SYS.INFO la instalarile vechi

Documentatie noua (docs/diagnostic-spatiu-clienti.md): jobul DIAGSPATIU_ZILNIC si
pragurile lui, formatul emailurilor de alerta si cum se citesc din mbox-urile
Thunderbird, procedura de tunel SSH catre serverul unui client, triajul alertelor
si starea la 08.08.2026 pe fiecare client.

Reparatia la AUTOMOTIVE e deja aplicata in productie (plafon 600 -> 2000 MB,
truncate SYS.INFO): SYSTEM a trecut de la 65 MB la 1545 MB de crestere posibila.
Scriptul de livrare pentru ceilalti clienti e scris, dar nepublicat:
COMUN sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE.sql

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rft5ofNa4Ux5VEh4YnhJRC
This commit is contained in:
Marius
2026-08-08 17:38:54 +03:00
parent dabe5a34e3
commit 015cd797a1
8 changed files with 505 additions and 15 deletions

View File

@@ -4,8 +4,9 @@
-- Creates Oracle Scheduler jobs for automatic daily updates:
-- - UPDATEROA_ZILNIC: Daily ROA application update (04:00)
-- - UPDATERTVAI_ZILNIC: Daily RTVAI module update (04:30)
-- - SYS.SYSINFO_PURJARE_ZILNIC: purjare SYS.INFO la 90 zile (03:30) - creat ENABLED
--
-- Jobs are created DISABLED by default - enable manually after verification
-- Update jobs are created DISABLED by default - enable manually after verification
--
-- Usage:
-- sqlplus sys/password@service as sysdba @scheduler-jobs.sql
@@ -31,7 +32,7 @@ PROMPT
-- SECTION 1: DROP EXISTING JOBS (if any)
-- ============================================================================
PROMPT [1/4] Removing existing jobs (if any)...
PROMPT [1/5] Removing existing jobs (if any)...
BEGIN
BEGIN
@@ -49,6 +50,14 @@ BEGIN
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' UPDATERTVAI_ZILNIC job did not exist (OK)');
END;
BEGIN
DBMS_SCHEDULER.DROP_JOB(job_name => 'SYS.SYSINFO_PURJARE_ZILNIC', force => TRUE);
DBMS_OUTPUT.PUT_LINE(' Dropped existing SYSINFO_PURJARE_ZILNIC job');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' SYSINFO_PURJARE_ZILNIC job did not exist (OK)');
END;
END;
/
@@ -56,7 +65,7 @@ END;
-- SECTION 2: CREATE UPDATEROA_ZILNIC JOB
-- ============================================================================
PROMPT [2/4] Creating UPDATEROA_ZILNIC job...
PROMPT [2/5] Creating UPDATEROA_ZILNIC job...
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
@@ -121,7 +130,7 @@ END;
-- SECTION 3: CREATE UPDATERTVAI_ZILNIC JOB
-- ============================================================================
PROMPT [3/4] Creating UPDATERTVAI_ZILNIC job...
PROMPT [3/5] Creating UPDATERTVAI_ZILNIC job...
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
@@ -145,10 +154,60 @@ END;
/
-- ============================================================================
-- SECTION 4: GRANT SCHEDULER PRIVILEGES TO CONTAFIN_ORACLE
-- SECTION 4: CREATE SYS.SYSINFO_PURJARE_ZILNIC JOB
-- ============================================================================
-- SYS.INFO e logul de login scris de SYS.pINFO din AUTH_PACK: ~7 randuri per conectare,
-- ~13.500 randuri (~2 MB) pe luna, si nimic din baza nu-l citeste. Fara purjare creste la
-- nesfarsit si, mai devreme sau mai tarziu, umple tablespace-ul in care sta -> ORA-01653 la
-- primul script de actualizare care cere o extenta noua.
--
-- Jobul e in schema SYS pentru ca privilegiile ANY nu se aplica pe obiectele SYS cat timp
-- O7_DICTIONARY_ACCESSIBILITY = FALSE; din CONTAFIN_ORACLE ar iesi ORA-01031.
-- Stergerea se face in transe de 10.000 de randuri, ca prima rulare (care poate gasi sute de
-- mii de randuri acumulate) sa nu umfle UNDO.
--
-- Retentie: 90 de zile, aceeasi cu DIAG_SPATIU_LOG.
-- ============================================================================
PROMPT [4/4] Granting scheduler privileges to CONTAFIN_ORACLE...
PROMPT [4/5] Creating SYS.SYSINFO_PURJARE_ZILNIC job...
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'SYS.SYSINFO_PURJARE_ZILNIC',
job_type => 'PLSQL_BLOCK',
job_action => q'[
declare
lnRanduri number;
begin
loop
delete from sys.info
where dataora < systimestamp - interval '90' day
and rownum <= 10000;
lnRanduri := sql%rowcount;
commit;
exit when lnRanduri = 0;
end loop;
end;
]',
start_date => TRUNC(SYSDATE) + 1 + 3.5/24, -- Tomorrow at 03:30
repeat_interval => 'FREQ=DAILY;INTERVAL=1',
end_date => NULL,
enabled => TRUE, -- ENABLED: nu are nimic de configurat, iar uitat dezactivat
-- reproduce exact problema pe care o rezolva
auto_drop => FALSE,
comments => 'Purjare SYS.INFO la 90 zile - runs at 03:30'
);
DBMS_OUTPUT.PUT_LINE(' SYSINFO_PURJARE_ZILNIC job created (ENABLED)');
DBMS_OUTPUT.PUT_LINE(' Schedule: Daily at 03:30, retentie 90 zile');
END;
/
-- ============================================================================
-- SECTION 5: GRANT SCHEDULER PRIVILEGES TO CONTAFIN_ORACLE
-- ============================================================================
PROMPT [5/5] Granting scheduler privileges to CONTAFIN_ORACLE...
-- Grant CREATE JOB privilege (may already exist)
BEGIN
@@ -192,17 +251,18 @@ PROMPT Scheduler Jobs Verification
PROMPT ========================================
PROMPT
PROMPT CONTAFIN_ORACLE scheduled jobs:
SELECT job_name,
PROMPT ROA scheduled jobs:
SELECT owner,
job_name,
job_type,
enabled,
state,
TO_CHAR(next_run_date, 'YYYY-MM-DD HH24:MI:SS') AS next_run,
repeat_interval
FROM dba_scheduler_jobs
WHERE owner = 'CONTAFIN_ORACLE'
AND job_name IN ('UPDATEROA_ZILNIC', 'UPDATERTVAI_ZILNIC')
ORDER BY job_name;
WHERE (owner = 'CONTAFIN_ORACLE' AND job_name IN ('UPDATEROA_ZILNIC', 'UPDATERTVAI_ZILNIC'))
OR (owner = 'SYS' AND job_name = 'SYSINFO_PURJARE_ZILNIC')
ORDER BY owner, job_name;
PROMPT
PROMPT Job arguments for UPDATEROA_ZILNIC:
@@ -217,8 +277,9 @@ PROMPT ========================================
PROMPT Scheduler Jobs Creation Complete
PROMPT ========================================
PROMPT
PROMPT IMPORTANT: Jobs are created DISABLED by default.
PROMPT To enable a job after verifying configuration:
PROMPT IMPORTANT: Update jobs are created DISABLED by default.
PROMPT SYS.SYSINFO_PURJARE_ZILNIC is created ENABLED (nothing to configure).
PROMPT To enable an update job after verifying configuration:
PROMPT
PROMPT -- Enable UPDATEROA_ZILNIC
PROMPT EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATEROA_ZILNIC');