一丟失inactive日志文件組的恢復
由於inactive日志文件組表示已經完成了檢查點(dirty數據已經被寫入數據文件)數據庫本身不會發生數據庫丟失如果在這個時候相應的redo丟失/損壞可以通過clear重建日志文件組恢復
通過命令:
alter database clear logfile group n
如果數據庫模式是archived的則需要強制清除
alter database clear unarchived logfile group n
二丟失active或current日志文件組的恢復
丟失情況分兩種:
一個是正常關閉數據庫(如shutdown immediate)
另一個是異常關閉數據庫(如shutdown abort)
在損失當前日志時數據庫是正常關閉狀態
由於shutdown immediate會執行全面的checkpoint所以當前日志在實例恢復時可以不需要redo
在Oracle i中我們完全可以通過alter database clear logfile group n來進行恢復
但是在Oracle i中則可能無法對current的redo日志進行clear需要通過recover database until cancel恢復後(必須要做的)
用resetlogs選項打開
比如
alter database clear logfile group n
recover database until cancel;
alter database open resetlogs;
在損失當前日志時數據庫是異常關閉的
這種情況下由於沒有在執行全面檢查點時數據庫就已經關閉了那麼Oracle在進行實例恢復的時候必須要求當前的日志否則Oracle數據庫將無法open
這樣的情況下我們通常需要從備份中恢復數據文件通過應用歸檔日志進行向前推演直到最後一個完好的日志文件然後可以通過resetlogs啟動數據庫完成恢復那麼丟失的數據則是被損壞的日志文件中的數據
注意_allow_resetlogs_corruption是Oracle中的一個隱含參數如果系統實在不能resetlogs方式打開的後只能出此下策在pfile進行相應設置打開數據庫該函數的含義是允許在破壞一致性的情況下強制重置日志打開數據庫_allow_resetlogs_corruption將使用所有數據文件最舊的SCN打開數據庫所以通常來講需要保證SYSTEM表空間擁有最舊的SCN在強制打開數據庫之後可能因為各種原因會有ora
From:http://tw.wingwit.com/Article/program/Oracle/201311/17085.html