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

我正在寻找一个禁用所有工作的脚本。现在我在Toad中突出显示它们,单击“脱机”按钮,然后提交更改。必须有一种方法可以在PL / SQL中执行此操作。     
已邀请:
如果要阻止所有作业运行,可以更改初始化参数
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
这将禁用所有已启用的dbms作业。 您可以修改查询以启用所有禁用。     

要回复问题请先登录注册