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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java靜態變數在靜態方法內部無法改變值Java變數
- WEUI picker元件無法js動態改變選項UI元件JS
- flink學習(加餐)——job任務狀態變化
- ORACLE dbms_scheduler.create_job建立job作業遭遇PLS-00306Oracle
- oracle ENABLE=BROKENOracle
- Linux下共享VG改變活動狀態Linux
- Oracle ENABLE=broken引數與TCP KeepAliveOracleTCP
- Flask 框架啟動無法改變埠Flask框架
- Oracle無法自動排程DBMS_JOB&DBMS_SCHEDULER案例分析Oracle
- steam雲狀態無法同步怎麼辦 steam雲狀態無法同步會有什麼影響
- 系統設計架構:有狀態與無狀態架構
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- 頁面狀態改變會觸發的一些事件事件
- 事件溯源:是來自事件的狀態與作為狀態的事件? - verraes事件
- 【Oracle】ORA-23421: job number XXXX is not a job in the job queueOracle
- 個人中心釋出狀態無法同步到QQ
- 狀態變化模式模式
- PostgreSQL狀態變遷SQL
- Oracle buffer狀態深入剖析Oracle
- jenkins 構建 job 並獲取其狀態的實現Jenkins
- 出身無法選擇,IT行業再給你一次改變人生的機會行業
- 無狀態協議協議
- [20211203]演示job啟動時間改變的情況.txt
- 週末太放鬆,精神狀態卻萎靡不振,要改變
- win10中word怎麼切換改寫狀態_win10怎樣切換插入狀態和改寫狀態Win10
- oracle job管理(zt)Oracle
- 前端狀態管理與有限狀態機前端
- Oracle SCN健康狀態檢查Oracle
- RocketMQ 5.0:無狀態代理模式的探索與實踐MQ模式
- React 狀態管理:狀態與生命週期React
- 動態路由,透過id改變,改頁面路由
- 作業系統 『動態(可變)分割槽分配』作業系統
- 初識程式(一)——作業系統,程式管理,程式狀態作業系統
- Oracle 19C 監聽無法動態註冊例項Oracle
- React專題:可變狀態React
- 《無主之地3》:改變與不改變,或許結果都不令人意外
- 現版本小程式暫時無法監聽webview頁面高度改變WebView
- IOS 動態改變cell的高度iOS