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


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)

 

[引用參考:http://www.itpub.net/thread-264556-1-1.html]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM