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
293 lines
11 KiB
MySQL
293 lines
11 KiB
MySQL
-- ============================================================================
|
|
-- SCHEDULER JOBS FOR ROA UPDATE SYSTEM
|
|
-- ============================================================================
|
|
-- 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
|
|
--
|
|
-- Update jobs are created DISABLED by default - enable manually after verification
|
|
--
|
|
-- Usage:
|
|
-- sqlplus sys/password@service as sysdba @scheduler-jobs.sql
|
|
--
|
|
-- Prerequisites:
|
|
-- - CONTAFIN_ORACLE schema with PACK_UPDATE and PACK_ROARTVAI packages
|
|
-- - SERVER_INFO configured (server-info-init.sql)
|
|
-- - Directory objects created (directories-roaupdate.sql)
|
|
-- ============================================================================
|
|
|
|
SET ECHO OFF
|
|
SET FEEDBACK ON
|
|
SET SERVEROUTPUT ON
|
|
WHENEVER SQLERROR CONTINUE
|
|
|
|
PROMPT
|
|
PROMPT ========================================
|
|
PROMPT Creating ROA Scheduler Jobs
|
|
PROMPT ========================================
|
|
PROMPT
|
|
|
|
-- ============================================================================
|
|
-- SECTION 1: DROP EXISTING JOBS (if any)
|
|
-- ============================================================================
|
|
|
|
PROMPT [1/5] Removing existing jobs (if any)...
|
|
|
|
BEGIN
|
|
BEGIN
|
|
DBMS_SCHEDULER.DROP_JOB(job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC', force => TRUE);
|
|
DBMS_OUTPUT.PUT_LINE(' Dropped existing UPDATEROA_ZILNIC job');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT_LINE(' UPDATEROA_ZILNIC job did not exist (OK)');
|
|
END;
|
|
|
|
BEGIN
|
|
DBMS_SCHEDULER.DROP_JOB(job_name => 'CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC', force => TRUE);
|
|
DBMS_OUTPUT.PUT_LINE(' Dropped existing UPDATERTVAI_ZILNIC job');
|
|
EXCEPTION
|
|
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;
|
|
/
|
|
|
|
-- ============================================================================
|
|
-- SECTION 2: CREATE UPDATEROA_ZILNIC JOB
|
|
-- ============================================================================
|
|
|
|
PROMPT [2/5] Creating UPDATEROA_ZILNIC job...
|
|
|
|
BEGIN
|
|
DBMS_SCHEDULER.CREATE_JOB(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
job_type => 'STORED_PROCEDURE',
|
|
job_action => 'CONTAFIN_ORACLE.PACK_UPDATE.UPDATEROA',
|
|
number_of_arguments => 6,
|
|
start_date => TRUNC(SYSDATE) + 1 + 4/24, -- Tomorrow at 04:00
|
|
repeat_interval => 'FREQ=DAILY;INTERVAL=1',
|
|
end_date => NULL,
|
|
job_class => 'DEFAULT_JOB_CLASS',
|
|
enabled => FALSE, -- DISABLED by default
|
|
auto_drop => FALSE,
|
|
comments => 'Daily ROA application update - runs at 04:00'
|
|
);
|
|
|
|
-- Set job arguments for PACK_UPDATE.UPDATEROA procedure
|
|
-- Arguments: p_update_baza, p_update_aplicatii, p_update_rapoarte, p_module, p_versiune, p_nivel
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 1,
|
|
argument_value => '1' -- p_update_baza: Update database objects
|
|
);
|
|
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 2,
|
|
argument_value => '1' -- p_update_aplicatii: Update applications
|
|
);
|
|
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 3,
|
|
argument_value => '1' -- p_update_rapoarte: Update reports
|
|
);
|
|
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 4,
|
|
argument_value => '' -- p_module: All modules (empty = all)
|
|
);
|
|
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 5,
|
|
argument_value => '' -- p_versiune: Latest version (empty = latest)
|
|
);
|
|
|
|
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
|
argument_position => 6,
|
|
argument_value => '-3' -- p_nivel: Update level (-3 = production)
|
|
);
|
|
|
|
DBMS_OUTPUT.PUT_LINE(' UPDATEROA_ZILNIC job created (DISABLED)');
|
|
DBMS_OUTPUT.PUT_LINE(' Schedule: Daily at 04:00');
|
|
DBMS_OUTPUT.PUT_LINE(' Action: PACK_UPDATE.UPDATEROA(1, 1, 1, '''', '''', -3)');
|
|
END;
|
|
/
|
|
|
|
-- ============================================================================
|
|
-- SECTION 3: CREATE UPDATERTVAI_ZILNIC JOB
|
|
-- ============================================================================
|
|
|
|
PROMPT [3/5] Creating UPDATERTVAI_ZILNIC job...
|
|
|
|
BEGIN
|
|
DBMS_SCHEDULER.CREATE_JOB(
|
|
job_name => 'CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC',
|
|
job_type => 'STORED_PROCEDURE',
|
|
job_action => 'CONTAFIN_ORACLE.PACK_ROARTVAI.UPDATERTVAI',
|
|
number_of_arguments => 0,
|
|
start_date => TRUNC(SYSDATE) + 1 + 4.5/24, -- Tomorrow at 04:30
|
|
repeat_interval => 'FREQ=DAILY;INTERVAL=1',
|
|
end_date => NULL,
|
|
job_class => 'DEFAULT_JOB_CLASS',
|
|
enabled => FALSE, -- DISABLED by default
|
|
auto_drop => FALSE,
|
|
comments => 'Daily RTVAI module update - runs at 04:30'
|
|
);
|
|
|
|
DBMS_OUTPUT.PUT_LINE(' UPDATERTVAI_ZILNIC job created (DISABLED)');
|
|
DBMS_OUTPUT.PUT_LINE(' Schedule: Daily at 04:30');
|
|
DBMS_OUTPUT.PUT_LINE(' Action: PACK_ROARTVAI.UPDATERTVAI()');
|
|
END;
|
|
/
|
|
|
|
-- ============================================================================
|
|
-- 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/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
|
|
EXECUTE IMMEDIATE 'GRANT CREATE JOB TO CONTAFIN_ORACLE';
|
|
DBMS_OUTPUT.PUT_LINE(' Granted CREATE JOB to CONTAFIN_ORACLE');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT_LINE(' CREATE JOB privilege already granted or error: ' || SQLERRM);
|
|
END;
|
|
/
|
|
|
|
-- Grant MANAGE SCHEDULER privilege for job management
|
|
BEGIN
|
|
EXECUTE IMMEDIATE 'GRANT MANAGE SCHEDULER TO CONTAFIN_ORACLE';
|
|
DBMS_OUTPUT.PUT_LINE(' Granted MANAGE SCHEDULER to CONTAFIN_ORACLE');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT_LINE(' MANAGE SCHEDULER privilege already granted or error: ' || SQLERRM);
|
|
END;
|
|
/
|
|
|
|
-- Grant CREATE EXTERNAL JOB for ExecuteScriptOS functionality
|
|
BEGIN
|
|
EXECUTE IMMEDIATE 'GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE';
|
|
DBMS_OUTPUT.PUT_LINE(' Granted CREATE EXTERNAL JOB to CONTAFIN_ORACLE');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DBMS_OUTPUT.PUT_LINE(' CREATE EXTERNAL JOB privilege already granted or error: ' || SQLERRM);
|
|
END;
|
|
/
|
|
|
|
COMMIT;
|
|
|
|
-- ============================================================================
|
|
-- VERIFICATION
|
|
-- ============================================================================
|
|
|
|
PROMPT
|
|
PROMPT ========================================
|
|
PROMPT Scheduler Jobs Verification
|
|
PROMPT ========================================
|
|
PROMPT
|
|
|
|
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'))
|
|
OR (owner = 'SYS' AND job_name = 'SYSINFO_PURJARE_ZILNIC')
|
|
ORDER BY owner, job_name;
|
|
|
|
PROMPT
|
|
PROMPT Job arguments for UPDATEROA_ZILNIC:
|
|
SELECT argument_position, argument_name, value
|
|
FROM dba_scheduler_job_args
|
|
WHERE owner = 'CONTAFIN_ORACLE'
|
|
AND job_name = 'UPDATEROA_ZILNIC'
|
|
ORDER BY argument_position;
|
|
|
|
PROMPT
|
|
PROMPT ========================================
|
|
PROMPT Scheduler Jobs Creation Complete
|
|
PROMPT ========================================
|
|
PROMPT
|
|
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');
|
|
PROMPT
|
|
PROMPT -- Enable UPDATERTVAI_ZILNIC
|
|
PROMPT EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC');
|
|
PROMPT
|
|
PROMPT To run a job immediately for testing:
|
|
PROMPT EXEC DBMS_SCHEDULER.RUN_JOB('CONTAFIN_ORACLE.UPDATEROA_ZILNIC');
|
|
PROMPT
|