Je recherche un script qui désactive tous les travaux. À l'heure actuelle, je les souligne tous dans le crapaud, cliquez sur le bouton Trair Offline, puis commettez des modifications. Il doit y avoir un moyen de le faire dans PL / SQL. P>
4 Réponses :
Si vous souhaitez empêcher tous les travaux d'exécution, vous pouvez modifier le paramètre d'initialisation Vous pouvez également marquer les travaux cassés p> job_queue_processes code>. Si vous définissez cela sur 0, Oracle n'exécutera pas d'emplois planifiés à l'aide de
dbms_job code>.
BEGIN
FOR x IN (SELECT * FROM user_jobs)
LOOP
dbms_job.broken( x.job, false, SYSDATE + interval '1' minute);
END LOOP;
END;
Juste un plus, à l'aide de DBMS_JOB est limitée à des emplois pour le propre utilisateur ... Si vous souhaitez désactiver les travaux de tous les utilisateurs, vous devez vous connecter en tant qu'administrateur et utiliser dbms_ijob code>.
Sachez que dbms_job code> est maintenant obsolète et
dbms_schéduleur code> est son remplaçant.
Existe-t-il un moyen de préserver le programme d'origine et de ne pas commencer tous les emplois comme une avalanche?
== pour les travaux DBMS_JOB:
exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
Veuillez exécuter la requête ci-dessous.
set head off spool job_disable.sql select 'execute dbms_scheduler.disable('||''''||owner||'.'||job_name||''''||');' from dba_scheduler_jobs where enabled='TRUE'; spool off; @job_disable.sql
DECLARE CURSOR selection IS SELECT job_name FROM dba_scheduler_jobs WHERE owner = '[username]'; --or make your own selection here BEGIN FOR record IN selection LOOP dbms_scheduler.disable(record.job_name); END LOOP; END;