簡單記錄一次REDO檔案損壞報錯 ORA-00333重做日誌讀取塊出錯
一.故障描述
首先是例項恢復需要用到的REDO檔案損壞
二、解決方法
1.對於非當前REDO或者當前REDO但是無活動事務使用以下CLEAR命令:
用CLEAR命令重建該日誌檔案SQL>alter database clear logfile group 3;
如果是該日誌組還沒有歸檔,則需要用SQL>alter database clear unarchived logfile group 3;
因為是當前例項恢復需要用的REDO,且未歸檔,使用是CLEAR命令不行的。2.沒備份,有備份可以參考以下:
拷貝有效的資料庫的全備份,並不完全恢復資料庫
可以採用獲取最近的SCN的辦法用until scn恢復或用until cnacel恢復
recover database until cancel
先選擇auto,儘量恢復可以利用的歸檔日誌,然後重新
recover database until cancel
這次輸入cancel,完成不完全恢復,也就是說恢復兩次。如:
SQL> recover database until cancel;
Auto
……
SQL> recover database until cancel;
Cancel;
、利用alter database open resetlogs開啟資料庫
說明:
這種辦法恢復的資料庫是一致的不完全恢復,會丟失當前聯機日誌中的事務資料
這種方法適合於歸檔資料庫並且有可用的資料庫全備份。
恢復成功之後,記得再做一次資料庫的全備份。
建議聯機日誌檔案一定要實現鏡相在不同的磁碟上,避免這種情況的發生,因為任何資料的丟失對於生產來說都是不容許的。
3.修改隱含引數_allow_resetlogs_corruption
_allow_resetlogs_corruption=TRUE
重新啟動資料庫,利用until cancel恢復
SQL>recover database until cancel;
Cancel
如果出錯,不再理會,發出
SQL>alter database open resetlogs;
資料庫被開啟後,馬上執行一個full export
shutdown資料庫,去掉_all_resetlogs_corrupt引數二、參考EYGLE:ORA-00600 kcratr1_lostwrt之解決與原理分析
ksedmp: internal or fatal error這個錯誤不難解決,但是其具體成因有點意思。
ORA-00600: internal error code, arguments: [kcratr1_lostwrt], [], [], [], [], [], [], []
Current SQL statement for this session:
alter database open
Metalink對這個錯誤的解釋只有一句關鍵:
When an instance is restarted following an instance crash, Oracle carries out some checks against the last block that was written to disk prior to the instance crash.這句話是說,當例項崩潰之後啟動,Oracle會去檢查崩潰前最後一個寫出的資料塊,通過控制檔案校驗其是否一致,如果這個塊是Old的,則說明最後的寫操作丟失了。
If Oracle finds an old block, then this suggests a lost write and the error is raised.
這是一個非常快捷巧妙地判斷,如果有寫丟失,自然必須引入恢復。
在跟蹤檔案中記錄了詳細的資訊:
Last BWR afn: 6 rdba: 0x18f9590(blk 1021328) ver: 0x0001.5c21fd6e.01 flg: 0x04提示說,控制檔案記錄的最後一次寫的資料塊是file6 block 1021328,SCN版本為:5c21fd6e,而資料檔案上記錄的SCN則是5c1ec4f0,後者Old,小於前者,這說明丟失了寫操作。
Disk version: 0x0001.5c1ec4f0.04 flag: 0x04
那能否恢復呢?跟蹤檔案裡還會記錄這樣的資訊:
Thread checkpoint rba:0x00dfeb.00000002.0010 scn:0x0001.5c1ee5b7執行緒檢查點的SCN為5c1ee5b7,而On-Disk Rba的SCN為5c2266d6,完全可以推演超過5c21fd6e,可以恢復。
On-disk rba:0x00dfeb.0001161f.0000 scn:0x0001.5c2266d6
所以這樣的問題:
SQL>startup mount;一般就可以完成恢復了,如果不幸的,你的On-Disk Rba不足以恢復丟失的寫操作,則問題將嚴重了。
SQL>recover database;
SQL>alter database open;
參考:http://blog.itpub.net/25964700/viewspace-709097/ http://www.eygle.com/archives/2010/05/ora-00600_kcratr1_lostwrt.html
相關文章
- 重做日誌檔案損壞測試
- redo日誌損壞
- REDO日誌損壞,非歸檔模式資料檔案恢復模式
- Oracle重做日誌檔案損壞或丟失後的恢復Oracle
- 一次日誌檔案損壞的恢復
- Oracle11g redo log 建立、新增、刪除(重做日誌組,重做日誌檔案)Oracle
- redo重做日誌管理
- 記錄一則clear重做日誌檔案的案例
- 【REDO】重做日誌檔案(redo log files)管理(增,刪,改,查,切)
- MySQL重做日誌(redo log)MySql
- 【REDO】刪除REDO LOG重做日誌組後需要手工刪除對應的日誌檔案
- 聯機日誌檔案損壞問題
- 當前聯機日誌檔案損壞
- 檔案或目錄損壞且無法讀取怎麼辦?
- 記錄日誌檔案
- 【REDO】刪除聯機重做日誌檔案組的注意事項
- laravel5.7 不記錄 sql 報錯日誌,自定義日誌資訊LaravelSQL
- 直接分離刪除日誌檔案後附加報錯的簡單解決方法
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- R語言 - 讀取CSV檔案報錯R語言
- 記錄一次Git報錯Git
- redo日誌檔案學習筆記(一)筆記
- 聯機重做日誌、歸檔日誌、備用重做日誌
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- Oracle重做日誌檔案基礎Oracle
- oracle 聯機重做日誌檔案Oracle
- 重做日誌檔案中的SCN
- 丟失重做日誌讀書筆記筆記
- 重做日誌(redo log)相關總結
- [問題]多個檔案寫入日誌報錯
- 雙擊時它說“檔案或目錄損壞且無法讀取"
- REDO檔案丟失或者損壞的恢復
- 誤刪重做日誌檔案組導致啟動資料庫報錯ORA-03113資料庫
- 【REDO】刪除聯機重做日誌檔案組成員的注意事項
- 記錄一次 HotPE 導致的檔案系統損壞及修復
- Laravel 大檔案分塊上傳錯誤記錄Laravel
- oracle聯機日誌檔案REDO LOGFILE簡述Oracle
- 線上修改重做日誌檔案的大小