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