2011-04-07 83 views

回答

11

如果要防止所有作業運行,可以更改初始化參數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

6

==對於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'); 
0

請運行下面的查詢。

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作業。

您可以修改查詢以啓用所有禁用。