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