Oracle修復(fù)已損壞定時任務(wù)(Jobs)的方法步驟
修復(fù)已損壞定時任務(wù),可根據(jù)下面步驟進(jìn)行恢復(fù)
診斷:為什么Job 23會損壞?
一個Job被標(biāo)記為“損壞”(Broken),最常見的原因是它連續(xù)多次執(zhí)行失?。?code>FAILURES次數(shù)累積)。這通常是因為它調(diào)用的存儲過程、SQL語句或內(nèi)部邏輯出了錯,系統(tǒng)為了保護(hù)資源,自動將其暫停。
修復(fù):三步讓Job 23恢復(fù)正常
你可以按照下面的步驟來修復(fù)它:
第一步:找出病因(查看具體錯誤)
首先,我們需要知道是什么錯誤導(dǎo)致了Job失敗。通過以下SQL語句,可以查看Job 23的詳細(xì)信息和最近一次執(zhí)行失敗的錯誤代碼(LAST_ERR或查看數(shù)據(jù)庫的告警日志alert.log)。
-- 查看Job 23的詳細(xì)信息 SELECT JOB, WHAT, LAST_DATE, NEXT_DATE, INTERVAL, FAILURES, BROKEN, LAST_ERR FROM DBA_JOBS WHERE JOB = 23;
重點(diǎn)關(guān)注:
FAILURES:失敗的次數(shù)。LAST_ERR:最后一次執(zhí)行失敗時,Oracle返回的錯誤代碼(例如,如果這里顯示ORA-00942,就表示是“表或視圖不存在”的錯誤)。
第二步:釜底抽薪(修復(fù)Job內(nèi)部邏輯)
根據(jù)第一步查出的錯誤,你需要去修復(fù)Job 23內(nèi)部調(diào)用的WHAT內(nèi)容(比如是一個存儲過程SDHXEM_MDI_TEMP;)。這通常意味著你需要:
- 登錄到數(shù)據(jù)庫,找到Job 23所執(zhí)行的PL/SQL代碼或存儲過程。
- 修正其中的SQL語法錯誤、權(quán)限問題或引用了不存在的對象。
- 這個過程需要在數(shù)據(jù)庫內(nèi)部完成,你需要有相應(yīng)的權(quán)限去修改這些數(shù)據(jù)庫對象。
第三步:手動喚醒(清除損壞標(biāo)記)
當(dāng)?shù)讓拥拇a邏輯被修復(fù)后,我們就可以“喚醒”這個沉睡的Job了。最直接的方法是手動執(zhí)行一次,成功后,損壞標(biāo)記通常會被自動清除。
-- 手動運(yùn)行Job 23 BEGIN DBMS_JOB.RUN(23); COMMIT; END; /
如果手動執(zhí)行成功,你再查詢 DBA_JOBS,應(yīng)該會看到 BROKEN 列變?yōu)榱?N,FAILURES 變?yōu)榱?0。
如果手動執(zhí)行后損壞標(biāo)記依然存在,可以執(zhí)行強(qiáng)制修復(fù)命令:
-- 強(qiáng)制清除損壞標(biāo)記 BEGIN DBMS_JOB.BROKEN(23, FALSE); COMMIT; END; /
重要提醒
- 別忘了提交:在使用
DBMS_JOB包進(jìn)行操作(如RUN、BROKEN)后,一定要執(zhí)行COMMIT;,否則更改不會生效。 - 檢查進(jìn)程:正如我們上次討論的,也順便確認(rèn)一下數(shù)據(jù)庫的Job隊列進(jìn)程是開啟的:
SHOW PARAMETER JOB_QUEUE_PROCESSES;,這個參數(shù)值必須大于0。
你可以先執(zhí)行第一步,看看LAST_ERR里具體是哪個錯誤代碼。如果查到了具體的錯誤但不確定如何修復(fù),可以把錯誤代碼發(fā)給我,我?guī)湍憧纯础?/p>
以上就是Oracle修復(fù)已損壞定時任務(wù)(Jobs)的方法步驟的詳細(xì)內(nèi)容,更多關(guān)于Oracle修復(fù)已損壞定時任務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
And,Where使用提示以及用+進(jìn)行左關(guān)聯(lián)的提示及注意事項
先左關(guān)聯(lián)后在過濾假如關(guān)聯(lián)的結(jié)果里面B.b3=null那么你在where后面在加B.b3=2那么結(jié)果中B.b3肯定是沒有null的情況的,也就是說用+進(jìn)行左關(guān)聯(lián)沒有用leftjoin靈活待后續(xù)看是否有什么好的解決方案2013-02-02
Oracle中rank,over partition函數(shù)的使用方法
本文主要介紹Oracle中rank,over partition函數(shù)的用法,希望對大家有所幫助。2016-05-05
PLSQL無法連接64位Oracle數(shù)據(jù)庫/Database下拉框為空的完美解決方法
這篇文章主要介紹了PLSQL無法連接64位Oracle數(shù)據(jù)庫/Database下拉框為空的完美解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
oracle使用sql腳本生成csv文件案例學(xué)習(xí)
在oracle中用sql腳本生成csv文件,很多的朋友都想實現(xiàn)這樣的功能,所以本文的出現(xiàn)是很有必要的,感興趣的你可千萬不要錯過,希望本文可以幫助到你2013-02-02
oracle to_char函數(shù)將number轉(zhuǎn)成string
很多數(shù)據(jù)轉(zhuǎn)換處理操作時,會遇到將0.007007040000轉(zhuǎn)換成0.70%的需求,我們使用Oracle 的SQL 函數(shù) to_char可以實現(xiàn)這種轉(zhuǎn)換,需要了解的朋友可以參考下2012-11-11
Oracle中PL/SQL復(fù)合數(shù)據(jù)類型
這篇文章介紹了Oracle中PL/SQL的復(fù)合數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05

