Скрипт для отключения всех заданий в Oracle (пакет DBMS_JOB)? - PullRequest
7 голосов
/ 07 апреля 2011

Я ищу скрипт, который отключает все задания. Прямо сейчас я выделяю их всех в Toad, нажимаю кнопку «Отключить» и затем фиксирую изменения. Должен быть способ сделать это в PL / SQL.

Ответы [ 3 ]

12 голосов
/ 07 апреля 2011

Если вы хотите запретить выполнение всех заданий, вы можете изменить параметр инициализации JOB_QUEUE_PROCESSES. Если вы установите значение 0, Oracle не будет запускать задания, запланированные с использованием DBMS_JOB.

Вы также можете пометить нарушенные задания

BEGIN
  FOR x IN (SELECT * FROM user_jobs)
  LOOP
    dbms_job.broken( x.job, true );
  END LOOP;
END;

, что приведет к тому, что они не будут запущены (но позволят любым работам, созданным после этой точки, работать нормально). Для разрыва работы

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

установит выполнение всех заданий за 1 минуту.

6 голосов
/ 14 октября 2012

== Для заданий dbms_job:

alter system set job_queue_processes=0 scope=both;

Для некоторых техобслуживание может быть лучше и не хочу размещать их в сети, когда закончите техническое обслуживание.

== Для заданий dbms_scheduler:

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

и после завершения обслуживания:

exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
2 голосов
/ 19 октября 2015

Пожалуйста, запустите приведенный ниже запрос.

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

Это отключит все включенные задания dbms.

Вы также можете изменить запрос, чтобы включить все отключенные.

...