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

问题描述:

我正在寻找禁用所有作业的脚本。现在我在蟾蜍中突出显示它们,点击脱机按钮,然后提交更改。在PL/SQL中必须有一种方法来做到这一点。禁用Oracle中所有作业的脚本(DBMS_JOB包)?

如果要防止所有作业运行,可以更改初始化参数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分钟内运行。

+1

只是一个加号,使用dbms_job仅限于自己的用户的作业......如果要禁用所有用户的作业,则必须以管理员身份登录并使用'dbms_ijob'。 – ceinmart 2013-08-21 19:26:02

==对于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作业。

您可以修改查询以启用所有禁用。