發現系統數據沒有更新,查看oracle定時任務,估計沒有執行。
發現next_date變成了4000/1/1 ,broken被選中。
select * from user_jobs發現該任務失敗次數達16次。
查得如下原因:
當任務運行失敗時,SNP過程在1分鍾后將再次試圖運行該任務。如果這次運行又失敗了,下一次嘗試將在2分鍾后進行,再下一次在4分鍾以后。任務隊列每次 加倍重試間隔直到 它超過了正常的運行間隔。在連續16次失敗后,任務就被標記為中斷的(broken),如果沒有用戶干預,任務隊列將不再重復執行。
當將一個任務的next_date參數賦值為null時,則該任務下一次運行的時間將被指定為4000年1月1 日,也就是說該任務將永遠不再運行。在大多數情況下,這可能是我們不願意 看到的情形。但是,換一個角度來考慮,如果想在任務隊列中保留該任務而又不想讓其 運行,將next_date設置為null卻是一個非常簡單的辦法。
手動test該定時任務,發現了報錯原因,是插入ipv6的ip失敗,將其刪除。將定時任務恢復,重新執行,執行成功則失敗次數將重置0.
將任務停掉的方法:
dbms_job.broken(v_job,true,next_date); //停止一個job,v_job可寫job號,里面參數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。