7
votes

Script pour désactiver tous les travaux dans Oracle (DBMS_JOB Package)?

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.


0 commentaires

4 Réponses :


14
votes

Si vous souhaitez empêcher tous les travaux d'exécution, vous pouvez modifier le paramètre d'initialisation 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>.

Vous pouvez également marquer les travaux cassés p>

BEGIN
  FOR x IN (SELECT * FROM user_jobs)
  LOOP
    dbms_job.broken( x.job, false, SYSDATE + interval '1' minute);
  END LOOP;
END;


3 commentaires

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 .


Sachez que dbms_job est maintenant obsolète et dbms_schéduleur 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?



8
votes

== pour les travaux DBMS_JOB:

exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');


0 commentaires

3
votes

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


0 commentaires

1
votes
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;

0 commentaires