Скрипт для отключения всех заданий в Oracle (пакет заданий СУБД)?
Я ищу скрипт, который отключает все рабочие места. Прямо сейчас я выделяю их все в жабе, нажимаю кнопку "отключить", а затем фиксирую изменения. Должен быть способ сделать это в PL/SQL.
3 ответов
если вы хотите запретить выполнение всех заданий, вы можете изменить параметр инициализации 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 минуты.
== для 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');
пожалуйста, выполните следующий запрос.
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
это отключит все задания СУБД, которые включены.
вы можете изменить запрос, чтобы включить все отключенные тоже.