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]