禁用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分钟内运行。
答
==对于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作业。
您可以修改查询以启用所有禁用。
只是一个加号,使用dbms_job仅限于自己的用户的作业......如果要禁用所有用户的作业,则必须以管理员身份登录并使用'dbms_ijob'。 – ceinmart 2013-08-21 19:26:02