Oracle資料庫Job的下次執行時間老是變動問題

2022-02-13 20:11:45 字數 757 閱讀 3803

job的 interval設定為 sysdate+1 結果好多客戶的這個時間最後會變的亂起八糟, 

或是 匯入 , 或是手動執行了等等, 還有自動會變的, 而且不少,  

覺得莫名其妙, ,

今天網上搜了下 , 終於明白了其中的原因

由於oracle的job的時間檢查週期的差異性  和 job程序數量及job併發量的問題

以及 job失敗等原因導致job延後執行成功 都會導致 下次job的起點時間的變化(sysdate發生了變化)

並且也找到了解決辦法, 

比如,我要每天凌晨1點執行, interval就應該是:

trunc(sysdate)+1+1/24

表示 今天的凌晨 加 一天 加 一小時 ==>明天凌晨1點

原因:sysdate會不穩定,但是不管是今天什麼時候,trunc(sysdate) 返回的都是今天的 0點!!!!

so....只要job在當天完成都可以保證每天時間點基本一致!

如果要間隔半小時執行, interval就應該是:

trunc(sysdate,'

hh24

') + (trunc(to_char(sysdate,'

mi')/

30)+

1)/(24

*2)

[引用參考:

oracle資料庫JOB方式執行任務

在執行一些資料庫操作的時候,有的任務比較複雜,需要花費數個小時的時間。直接執行的話,有如果出現網路中斷或者vpn 斷掉時,往往會導致前功盡棄,有事不得不花費大量的時間在旁邊進行監控。而採用job方式的話,只要保證 沒有問題,可以確保一次執行成功,因為job是提交到oracle伺服器上進行執行的。具體...

oracle資料庫job的建立和使用

oracle中的job主要用來執行一些定時任務,如每天凌晨00 00在資料庫表中新增一條資料。job的執行,依賴儲存過程。準備一張資料庫表 mytest 準備乙個儲存過程 myproc 儲存過程實現對資料庫表新增一條記錄。create orreplace procedure myproc is be...

Oracle資料庫中,有Job不能自動執行。

oracle資料庫中,有job不能自動執行。1 手動run job發現不執行。lastdate 為空值。refresh 時total time數值一直增加。說明此job一直在執行。2 檢視job的執行的指令碼,發現指令碼執行時產生死迴圈。3 broken 此job。檢視此job還在執行。select...