重做日誌的恢復

leon830216發表於2014-02-23
1. 準備工作
首先 run 一個 checkpoint, 減少已提交事務的丟失
alter system checkpoint;

啟動到 mount 狀態, 確定丟失日誌檔案狀態
startup mount
select * from v$log;

如果生成 redo 檔案失敗, 先切換日誌, 刪除損壞日誌, 再生成同名新日誌


2. 恢復

2-1. 使用者管理的恢復

2-1-1. 丟失非活動日誌 (inactive)
由於已經完成檢查點, 非活動日誌所保護的資料都已寫入 datafile, 只需重建該日誌組即可

清除日誌組
alter database clear logfile group 1

如果資料庫處於歸檔模式, 並且該日誌組尚未完成歸檔, 則需使用如下強制命令清除,會丟失歸檔日誌
alter database clear unarchived logfile group 1

2-1-2. 丟失當前或活動日誌 (current或active)

資料庫正常關閉情況下, 由於資料庫已完成檢查點, 當前日誌所保護的資料都已寫入磁碟
恢復所有資料檔案, 執行基於取消的不完全恢復
startup mount
recover database until cancel
alter database open resetlogs

資料庫異常關閉情況下, 恢復所有資料檔案, 執行給予取消的不完全恢復
需指定最後一個完好的歸檔日誌用來完成恢復, 此操作將丟失聯機 redo 日誌的內的全部資料
startup mount
recover database until cancel
alter database open resetlogs

如果資料庫沒有備份並處於非歸檔模式, 則可利用隱含引數強制地忽略一致性開啟資料庫
成功開啟後,exp -> 新建庫 -> imp

alter system set "_allow_resetlogs_corruption"=true scope=spfile
shutdown immediate
startup mount
recover database using backup controlfile until cancel
cancel
alter database open resetlogs
shutdown immediate
startup

2-2. 基於RMAN的不完全恢復
startup mount;
run{
# 做不完全恢復時, 指定恢復執行的終點的日誌序號
set until sequence 1 thread 2;
restore database;
recover database;
}
alter database open resetlogs;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22558114/viewspace-1086572/,如需轉載,請註明出處,否則將追究法律責任。

相關文章