2013年12月9日 星期一

Oracle - Controlfile 還原


當 Oracle DBA 最討厭遇到的事情就是 檔案毀損、資料不見 , 還記得我的老師這麼說過, 機房可以爆炸但資料不能不見, 逼不得已毀損也只能以最小的損失為原則, 這句話我一直謹記在心。


資料無遺失的還原都是歸功於完好的備分策略
以下模擬示範的是 DB最重要的controlfile 損毀的各種情況



狀況1:發現 DB 狀態是shutdown ,重新open dbORA-00205錯誤, 檢查alert Log
      ORA-00227 錯誤,估計是Controlfile出現毀損
說明:DB目前在shutdown狀態, rodo log file無損毀,每天晚上有做 controlfile backup

目標:controlfile backup file還原, 資料並完全恢復

1.db 重開時, ora-00205錯誤, 查看alert log ,估計是controlfile 損毀


2.利用rman 來還原controlfile, 先取得dbid, 可以通過 autobackup file 檔名來獲得dbid


3.設定dbid , 並恢復 controlfile

4.db開到mount, rman進行recover database

6.DB Open Resetlogs , 還原成功


狀況2:發現DB 狀態是shutdown ,重新open dbORA-00205錯誤, 檢查alert log
  ORA-00227 錯誤訊息,估計是Controlfile出現毀損
說明:DB 目前在shutdown 狀態,rodo log file也都存在, 不過只有control file txt 備分

目標:controlfile control file backup txt還原, 資料並完全恢復









狀況3:發現DB 狀態是shutdown ,重新open dbORA-00205錯誤, 檢查alert Log
      ORA-00227 corrupt block detected in control file 錯誤,估計是Controlfile出現損毀,
  最後發現inactive redo log file group也損毀


1.在進行線上操作發現DBshutdown 狀態, 重新open時出現錯誤

2.使用指令( noresetlogs 模式)重新建立controlfile, 發現不能建立,原因是redo02.log也壞了

3.使用指令( resetlogs 模式)重新建立controlfile

4.查看壞掉的redo log file 狀態, 壞掉的redo log file不是current

5.不是currentactive狀態,表示資料已經歸檔, 使用指令重置壞掉的 redo log file group

6.嘗試 open resetlogs , 發現還需要 recovery

7.recover database 發現不行, 改用using backup controlfile ,並且指定恢復到shutdown 前最後一個運行的redo log file, redo01.log 並不是最後, 改指定redo03.log

8 指定恢復到 redo03.log, recover 成功後open resetlogs 

9.因新建的 controlfile 沒有temp,因此加上temp





















沒有留言:

張貼留言