oracle JOB 相關指令碼

2021-08-24 21:02:57 字數 2195 閱讀 2533

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庫...