注釋
今天研發同事找我確認 PKG_WMS.proc_TaskMain 存儲的 job 是否還在運行,竟發現 dba_jobs.NEXT_DATE=4000/1/1,如下看看究竟原因吧~
JOB 信息:
參數:
BROKEN ? : 中斷標記 ,'N 啟動、Y 中斷' --> DBMS_JOBS.BROKEN(job_id,TRUE/FALSE); 停止 / 啟動 job, 隨后需要 COMMIT; 否則設置失效
FAILURES ?:錯誤次數
last_date:job 上次成功執行的時間
next_date:job 下次執行的時間 (受 last_date 和 interval 的影響)
total_time:job 運行的總時間 (每次運行的時間累加)
this_date:job 正在執行的時間 (如果查詢時 job 正在執行則有值)
分析:
*** 若定時任務 what 存儲過程調用出現異常 (例如:空間不足、存儲過程本身編寫問題..)
*** job 會自動嘗試 16 次連續失敗后再將 broken 狀態改為 Y,并將 next-date 改為 “4000-1-1”,只能手動 exec dbms_job.run(:id); 來啟動 job;
譬如:存儲過程 p1,隨便注釋 begin/end 行, 體現語法問題,job 會正常按照 p1 存儲過程的 job 運行 16 次,再 broken 中斷 job,
若到 10 次,存儲過程更改為正確狀態,錯誤次數將改為 0,job 改為正常;
判斷問題方法:
1、手動 call 存儲來判斷是什么問題,若 call 存儲時未報錯,說明之前該存儲有問題過,job 嘗試運行已超過 16 次,需要手動 exec dbms_job.run(:id); 啟動 job;
2、查看 alert 日志,oracle job 異常會記錄到告警日志;
嘗試啟動...
SQL>begin
2?????dbms_job.run(1543);
3????end;
4??/
ORA-12011:?無法執行?1?作業
ORA-06512:?在?"SYS.DBMS_IJOB",?line?648
ORA-06512:?在?"SYS.DBMS_JOB",?line?284
ORA-06512:?在?line?2
SQL>
報錯,再看下 alert 內容 (方案 2):
1、
ORA-12012?:?自動執行作業?1543?出錯
ORA-12899?:?列?"FWS"."RECODE_ERROR_MSG"."ERROR_MSG"的值太大?(實際值?:?704,?***值:?500)
ORA-06512?:?在?"FWS.PROC_WRITEERRMSG",?line?22
ORA-06512?:?在?"FWS.PKG_WMS",?line?132
ORA-01688?:?表?FWS.RECODE_ERROR_MSG?分區?SYS_P6181?無法通過?8192?(在表空間?TBS_WMS_CITY_JK_DATA?中)?擴展
ORA-06512?:?在?"FWS.PROC_WRITEERRMSG",?line?22
ORA-06512?:?在?"FWS.PKG_WMS",?line?514
ORA-01688?:?表?FWS.RECODE_ERROR_MSG?分區?SYS_P6181?無法通過?8192?(在表空間?TBS_WMS_CITY_JK_DATA?中)?擴展
ORA-06512?:?在?"FWS.PROC_WRITEERRMSG",?line?22
ORA-06512?:?在?"FWS.PKG_WMS",?line?502
ORA-01400?:?無法將?NULL插入?("FWS"."BILL_RECEIPT_CITY"."CREATOR")
ORA-06512?:?在?line?1
ORA-1688?:?unable?toextendtableFWS.RECODE_ERROR_MSG?partition?SYS_P6181by128intablespace?TBS_WMS_CITY_JK_DATA
ORA-1688?:?unable?toextendtableFWS.RECODE_ERROR_MSG?partition?SYS_P6181by8192intablespace?TBS_WMS_CITY_JK_DATA
ORA-1688?:?unable?toextendtableFWS.RECODE_ERROR_MSG?partition?SYS_P6181by128intablespace?TBS_WMS_CITY_JK_DATA
ORA-1688?:?unable?toextendtableFWS.RECODE_ERROR_MSG?partition?SYS_P6181by8192intablespace?TBS_WMS_CITY_JK_DATA
2、
ORA-12012:?自動執行作業?26?出錯
ORA-06550:?第?1?行,?第?96?列:
PLS-00905:?對象?LOTTERY.P_LOCK_CHECK_HD?無效
ORA-06550:?第?1?行,?第?96?列:
PL/SQL:?Statement?ignored
Mon?Jul?13?14:39:55?2015
Errors?infile?/u01/app/oracle/diag/rdbms/bjcc/ccem01/trace/ccem01_j001_36869.trc:
按照 alert log 解決即可..
***1、空間不足是因為 RECODE_ERROR_MSG 表每天 1 億數據量增加導致..truncate table RECODE_ERROR_MSG 即可; 表暴漲原因 Oracle 歸檔暴漲分析
***2、自己測試將存儲置失效的報錯信息;
原文鏈接 :http://t.cn/RmQyDdn
【編輯推薦】
【責任編輯:龐桂玉 TEL:(010)68476606】
點贊 0