脚本禁用Oracle中的所有作业(DBMS_JOB包)?

Cad*_*oux 7 oracle plsql oracle10g dbms-job

我正在寻找一个禁用所有工作的脚本.现在我在Toad中突出显示它们,单击"脱机"按钮,然后提交更改.必须有一种方法可以在PL/SQL中执行此操作.

Jus*_*ave 12

如果要阻止所有作业运行,可以更改初始化参数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;
Run Code Online (Sandbox Code Playgroud)

这将导致它们无法运行(但允许在该点之后创建的任何作业正常运行).打破工作

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

将所有作业设置为在1分钟内运行.


Tag*_*gar 7

==对于dbms_job作业:

alter system set job_queue_processes=0 scope=both;
Run Code Online (Sandbox Code Playgroud)

对于某些维护可能会更好/您通常可能希望脱机工作,并且在完成维护时不希望将它们联机.

==对于dbms_scheduler作业:

exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','TRUE');
Run Code Online (Sandbox Code Playgroud)

维护完成后:

exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
Run Code Online (Sandbox Code Playgroud)