1. 程式人生 > >oracle job執行時間往後延遲分析

oracle job執行時間往後延遲分析

問題描述:job的執行時間往後推遲很長時間,導致查詢的資料不再時間範圍內。
原因分析:
原因一:job執行時間間隔沒有加trunc擷取精度,而是直接使用sysdate+1/(24*60),由於job啟動需要時間或掃描精度,導致下次執行時間用的標準時間已經不是啟動JOB的時間,而是延遲幾秒,執行一次就延遲幾秒,執行次數多了延遲就長了
原因二:由於job執行的儲存過程異常,導致job執行失敗,查詢select * from dba_jobs的failures欄位加1,同時下次執行時間為本次執行時間+2分鐘,如果再次失敗,由下次執行的時間為上次開始執行時間+4 , 再次失敗則+8,2的階乘,以此類推,直到失敗16次後,job就broken了,不再嘗試執行。執行成功後,failures欄位清0
問題處理:
原因一處理:job的執行時間間隔加trunc函式,trunc(sysdate,'hh24')+3/24
原因二處理:檢視執行的失敗存過,處理後,重新編譯