--最多同時運行的JOB個數;如果太小,JOB就排隊等待;如果為0,就沒有JOB會被執行。
SQL> show parameter job_queue_processes
NAME??????????????????????????????????????? TYPE????????? VALUE
--------------------------???????? ----------??? -------------
job_queue_processes???????? integer ?? ????? 10
--一個什么也不做的SP
CREATE OR REPLACE PROCEDURE mytest
IS
BEGIN
?? ?NULL;
END;
--一個往表里寫數據的SP
CREATE OR REPLACE PROCEDURE mytest
IS
BEGIN
?? ?insert into test_table values(...);
END;
--定時調用SP,10秒(86400秒=1天)
SQL> VARIABLE job_id NUMBER;
SQL> BEGIN
?????????? -- :job_id中的冒號表示冒號后面的是變量,類似SQL Server的@
?????????? DBMS_JOB.SUBMIT(:job_id, 'mytest;', sysdate, 'sysdate + 10 / 86400') ;
?????????? COMMIT;? --記得一定要commit哦
?????????? END;
--查看剛才生成的Job ID
SQL> set serveroutput on
SQL> execute dbms_output.put_line(:job_id)? --這里倒是不需要commit,直接execute就好了
318
--查看所有Job
?select * from user_jobs;
--刪除Job
SQL> BEGIN
?????????? DBMS_JOB.REMOVE(123); --123是Job ID
?????????? COMMIT;
?????????? END;
如果Job由于某種原因未能成功運行,Oracle將重試16次,之后如果還未能成功運行,將被標記為Broken。
http://www.aygfsteel.com/Jcat/archive/2009/12/17/306315.html
從10g開始,DBMS_SCHEDULER 逐步會替換掉 DBMS_JOB
DBMS_JOB has been around forever, and now it is deprecated. Although DBMS_JOB still exists in 10g and 11g, but only for backward compatibility. No new features are being added to dbms_job and you will likely quickly run into its limitations. Oracle recommends the use of DBMS_SCHEDULER in releases 10g and up. DBMS_SCHEDULER is a much more robust package and fully-featured than DBMS_JOB. To use the DBMS_SCHEDULER package a user must be granted the CREATE JOB privilege.
After replace DBMS_JOB with DBMS_SCHEDULER for all jobs successful, the job_queue_processes parameter can now be set to zero.
SQL> alter system set job_queue_processes=0;