ORACLE job作業BROKEN狀態無法改變與ORA-12005&ORA-06550
近日,一客戶遇到一oracle job的broken狀態無法改變。
一、現象描述
根據客戶描述,其維護的oracle資料庫內有兩個Job作業被停止了,但是Job的BROKEN狀態一直是yes狀態,使用
Toad客戶端工具修改成no之後,重新登陸Toad客戶端檢視被修改的job作業BROKEN狀態屬性依然是yes狀態。
二、問題分析
接到問題之後,遠端上去,客戶演示了一遍問題發生的過程。站在DBA的角度,我不信任Toad第三方工具,於是讓
客戶登陸shell連線到資料庫伺服器端,使用sql命令EXEC DBMS_JOB.BROKEN(23,FALSE); commit;直接 修改,由於使
用的是sys使用者並非job作業的宿主,提示ORA-23421錯誤。於是,切換至job作業宿主執行job的broken狀態更改,命令
執行很順利但是使用如下sql語句再次檢視job狀態時,發現job的broken屬性還是yes,揉揉眼定睛再看依舊是yes。
SELECT JOB,NEXT_DATE,NEXT_SEC,FAILURES,BROKEN FROM DBA_JOBS where JOB=23;
到這裡,個人覺得很奇怪,資料庫應該給異常提示才對,於是檢視下資料庫的告警日誌,果然有
發現:
通過資料庫的告警日誌發現執行 EXEC DBMS_JOB.BROKEN(23,FALSE); commit;時,有ORA-12005告警提示,根據提示
的資訊猜測相關job作業的interval屬性設定有問題。於是,檢視job的interval配置資訊,配置資訊如下圖:
根據job作業的interval設定trunc(sysdate,'MM')+14+1/24,詢問客戶設定的意圖為每個月14號自動執行該job作業。
但是,job作業的interval設定就有問題了,一旦過了當前月份的14號相當於job作業執行完了最後一次不迴圈執行,
所以,11月16日interval時間變成11月14日,當手工再次執行 EXEC DBMS_JOB.BROKEN(23,FALSE); commit;修改作
業自動執行broken狀態時提示 ORA-12005。
三、問題處理
客戶的目的,需要設定的job作業interval為Interval =>TRUNC(LAST_DAY(SYSDATE))+14+1/24,意思是當月
14日執行完該job作業後,job的下次執行計劃安排在下個月的14日,job作業的broken狀態就不會自動變為yes且無法
修改為no。
小插曲:客戶在按提示修改job作業interval屬性時,誤將 Interval =>TRUNC(LAST_DAY(SYSDATE))+14+1/24整
體填進toad客戶端interval屬性框,提交修改時提示ORA-06550如下圖,其實問題很簡單,只需將日期運算公式
TRUNC(LAST_DAY(SYSDATE))+14+1/24填進toad客戶端的interval即可。其實,個人建議Toad應該在第一次修改job作
業broken狀態時提示錯誤ORA-12005,這樣就能第一時間發現問題。
根據提示,客戶最終成功完成了job作業的重置:
四、問題總結
客戶端工具使用過程中相比伺服器端有差距,不利於問題的第一時間發現;程式編制過程中,最好做測試,避免類似
作業異常排查發現這種日期類邏輯錯誤問題;熟悉客戶端的使用方法,避免類似ORA-06550低階錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2842563/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle執行JOB報ORA-27492:無法執行作業Oracle
- 改變無法改變的Query 變數變數
- WEUI picker元件無法js動態改變選項UI元件JS
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- flink學習(加餐)——job任務狀態變化
- Oracle中job無法自動執行Oracle
- Oracle使用DBMS_JOB建立的資料庫作業,遇到資料庫關閉狀態的排程Oracle資料庫
- Linux下共享VG改變活動狀態Linux
- [一分鐘知識]改變無法改變的Query 變數變數
- Flask 框架啟動無法改變埠Flask框架
- android狀態列一體化(改變狀態列的背景顏色)Android
- UITextField切換secureTextEntry狀態時字型發生改變的解決辦法UI
- 系統設計架構:有狀態與無狀態架構
- steam雲狀態無法同步怎麼辦 steam雲狀態無法同步會有什麼影響
- CSS改變文字選中狀態下的顏色CSS
- ORACLE dbms_scheduler.create_job建立job作業遭遇PLS-00306Oracle
- oracle ENABLE=BROKENOracle
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- Android的RadioButton隨著選中狀態的改變字型顏色也改變Android
- Oracle ENABLE=broken引數與TCP KeepAliveOracleTCP
- 事件溯源:是來自事件的狀態與作為狀態的事件? - verraes事件
- javascript動態改變單選按鈕radio的選中狀態JavaScript
- 頁面狀態改變會觸發的一些事件事件
- jQuery 點選按鈕改變可用狀態和顯示文字jQuery
- 物化檢視job無法執行
- 資料泵無法匯入JOB
- Oracle無法自動排程DBMS_JOB&DBMS_SCHEDULER案例分析Oracle
- SOA改變的企業軟體生態薦
- Net作業排程(五)—quartz.net動態新增job設計quartz
- 有狀態和無狀態的區別
- 個人中心釋出狀態無法同步到QQ
- PostgreSQL狀態變遷SQL
- 狀態變化模式模式
- ORACLE CRS 狀態 UNKNOWN 變為offlineOracle
- 物理dataguard 正常切換 角色轉換,switchover_status 狀態改變
- Oracle作業(JOB)更新next_date的探討(轉載)Oracle
- 出身無法選擇,IT行業再給你一次改變人生的機會行業
- 無狀態協議協議