2011-12-23

Oracle Scheduler Jobs ein-/ausschalten

ab Oracle Version 10g werden regelmäßig auszuführende, zeitgesteuerte Jobs über den Scheduler (Package: dbms_scheduler) und nicht mehr als Jobs (Package: dbms_jobs) eingerichtet. Immer wieder steht man vor der Aufgabe alle Scheduler-Jobs auf einmal zu deaktivieren, insbesondere z.B. nach dem Clonen einer Produktiv-DB in eine Test-DB.

Komplett ausgeschaltet werden kann der Scheduler mittels:
   dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','TRUE');
Komplett eingeschaltet werden kann der Scheduler mittels:
   dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
Zu beachten ist hier die, auf den ersten Blick, vertauschte Bedeutung von 'TRUE' und 'FALSE'!

Ein einzelner Job kann deaktiviert werden mittels:
   exec dbms_scheduler.disable('<job_name>');
und aktiviert wird er über:
   exec dbms_scheduler.enable('<job_name>');
Hiermit können jedoch nur Jobs des am SQL*Plus angemeldeten Benutzers (aktuelles Schema) ein- bzw. ausgeschaltet werden. Die Dokumentation liefert keinen Hinweis darauf, wie man z.B. als sys alle Scheduler-Jobs auch fremder Schamata ausschalten kann.

Etwas Herumexperimentieren hat aber ergeben, dass ein einzelner Job in einem fremden Schema deaktiviert werden kann mittels:
   exec dbms_scheduler.disable('<owner>.<job_name>');
und aktiviert wird ein Job in einem fremden Schema über:
   exec dbms_scheduler.enable('<owner>.<job_name>');
Man muss also einfach den Job-Namen ersetzen durch Eigentümer.Job-Name.

Die notwendigen Informationen zu den Scheduler-Jobs liefert die View DBA_SCHEDULER_JOBS.

Alle Scheduler-Jobs aller DB-Benutzer auf einmal ausschalten geht mit folgendem PL*SQL Block:
begin
   for v_job_info in (select owner, job_name from DBA_SCHEDULER_JOBS where enabled = 'TRUE')
   loop
      dbms_scheduler.disable(v_job_info.owner || '.' || v_job_info.job_name);
   end loop;
end;

Folgende Scheduler-Jobs sollte man typischer Weise aktiv/eingeschaltet lassen
(und es gibt sicher noch weitere, die laufen sollten):
OWNER                          JOB_NAME
------------------------------ ------------------------------
SYS                            BSLN_MAINTAIN_STATS_JOB
SYS                            DRA_REEVALUATE_OPEN_FAILURES
SYS                            ORA$AUTOTASK_CLEAN
SYS                            PURGE_LOG
ORACLE_OCM                     MGMT_STATS_CONFIG_JOB
ORACLE_OCM                     MGMT_CONFIG_JOB
EXFSYS                         RLM$SCHDNEGACTION
EXFSYS                         RLM$EVTCLEANUP

Keine Kommentare:

Kommentar veröffentlichen