job裡面的last_date和next_date,以及interval之間是什麼關係,last_date到底是記的job的開始執行時間,還是執行結束的時間。next_date到底是job的開始時間還是結束時間加上interval得出的呢?
如果乙個job的執行時間比較長(比如超過了interval),會不會出現多個同樣的job同時執行呢?
last_date=開始時間
last_date+interval=next_date
但要清楚,next_date通常不是真正的開始時間,真正的開始時間往往比next_date晚幾秒,也就是延時。
1job
的next time是在job開始執行的時候就算好了
不過是在job成功執行之後才寫上去
當job的執行時間超過interval時候也就是說在job的執行過程中nexttime就已經過了
那麼nexttime就變為job執行完時的時間
2sql> exec dbms_job.broken(21,true);
pl/sql過程被成功完成
sql> select * from user_jobs;
sql> exec dbms_job.run(21);
pl/sql過程被成功完成
sql> select * from user_jobs;
試寫一計畫任務:
declare
v_job number :=1;
begin
dbms_job.submit(v_job,'sp_fact_charge_code;',sysdate,'sysdate+1/1440');
commit;
end;
/解釋一下上面的程式
程式主體有四個引數,分別意為:v_job是計畫任務號,'sp_fact_charge_code'是計畫任務名,如果是多個計畫任務,就都用分號隔開,第三個sysdate意為立即執行此任務,第四個引數是間隔時間的設定,此處為每分鐘執行一次,1/1440=1/24/60。
檢視任務:select * from user_jobs;select * from all_jobs;
檢視正在執行的任務(不推薦使用,速度慢):select * from dba_jobs_running;
另外值得一提的是,在安裝
oracle配置的時候,有這麼乙個引數:
job_queue_processes=4 (預設4)
這個引數是定義當前最多可同時執行幾個job,它的最大值能設定為36。
除了submit引數外,其餘的幾個引數有:
dbms_job.run(v_job); //執行job
dbms_job.broken(v_job,true,next_date); //停止乙個job,裡面引數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。
dbms_job.remove(v_job); //刪除某個job
dbms_job.what(v_job,'sp_fact_charge_code;'); //修改某個job名
dbms_job.next_date(v_job,sysdate); 修改下一次執行時間
例題,設定每天2:10:10執行
trunc(sysdate)+2/24+10/24/60+10/24/60/60 //執行時間
trunc(sysdate)+1+2/24+10/24/60+10/24/60/60 //間隔執行時間
例題,設定每月2號的2:10:10執行
trunc(sysdate,'mm')+1+2/24+10/24/60+10/24/60/60 //執行時間
trunc(add_mouths(sysdate,1),'mm')+1+2/24+10/24/60+10/24/60/60 //間隔執行時間
例題,設定每個季度……
trunce(sysdate,'q')+1+2/24+10/24/60+10/24/60/60 //執行時間
trunce(add_mouths(sysdate,3),'q'))+1+2/24+10/24/60+10/24/60/60 //間隔執行時間
另外年為'y;
例題,設定每週一……
next_day(sysdate'星期一')
Oracle Job指令碼模板
注意 該指令碼必須在pl sql命令視窗下執行。set serverout on declare ac binary integer begin dbms job.submit ac,begin 儲存過程名稱 end trunc sysdate 1 trunc sysdate 1 dbms outp...
oracle job的相關操作
1 在sql中,首先要在資料庫中建立乙個儲存過程pack ywtj.ywtjweek 可以通過sql語句執行,達到新增儲存過程的目的,另外新增儲存過程的方法不贅述。2 在sql中,建立job,使資料庫每隔一段時間執行一次該儲存過程 定時執行job declare njob3 number begin...
oracle JOB遷移辦法
在系統遷移或公升級的時候,可能會有oracle job遷移的需求。對於10g的系統好說。可以用下面的辦法 userid as sysdba directory exp dir dumpfile expdp job.dmp logfile expdp job.log include job 對於9i庫...