select * from user_jobs;
select * from dba_jobs_running;
select * from dba_jobs;
job執行的存儲過程異常,導致job執行失敗,查詢select * from dba_jobs的failures字段加1,同時重試執行時間為本次執行時間+2分鍾,如果再次失敗,由重試的時間為上次開始執行時間+4 , 再次失敗則+8,2的階乘,以此類推,直到失敗16次后,job就broken屬性為Y,不再嘗試重試。
某一次執行成功后,dba_jobs中failures字段清0
job的執行時間往后推遲很長時間原因:
job執行時間間隔沒有加trunc截取精度,而是直接使用sysdate+1/(24*60),由於job啟動需要時間或掃描精度,導致下次執行時間用的標准時間已經不是啟動JOB的時間,而是延遲幾秒,執行一次就延遲幾秒,執行次數多了延遲就長了
記一次深坑:
Oracle job進程,包含協調進程(主進程)以及奴隸進程(子進程)
job_queue_processes取值范圍為0到1000,總共可創建多少個job進程由job_queue_processes參數來決定
job_queue_processes默認值為0,默認情況下任意方式創建的job都不會運行,只有大於0的時候,才會有進程去執行job !!!
job_queue_processes線程由DBMS_JOB與DBMS_SCHEDULER共享
查詢方法:select value from v$parameter where name like '%job_queue_processes%'