首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle Redo Log 損毀恢復完整策略:依狀態分類處理

     編輯:Oracle 資料庫基礎

一、遺失 Inactive Log Group 恢復

Inactive 表示已完成檢查點,髒資料已寫入資料檔,資料庫本身無遺失。可用 CLEAR 重建:

ALTER DATABASE CLEAR LOGFILE GROUP n;
-- 歸檔模式需強制清除
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;

二、遺失 Active 或 Current Log Group 恢復

分正常關閉與異常關閉兩種情境:

1. 正常關閉下遺失 Current Log

SHUTDOWN IMMEDIATE 會執行完整檢查點,Current redo 於實例恢復時非必要。

  • Oracle 8i:ALTER DATABASE CLEAR LOGFILE GROUP n 即可
  • Oracle 9i+:可能無法 CLEAR current redo,需:
    ALTER DATABASE CLEAR LOGFILE GROUP n;
    RECOVER DATABASE UNTIL CANCEL;
    ALTER DATABASE OPEN RESETLOGS;
    

2. 異常關閉下遺失 Current Log

無完整檢查點,實例恢復必須 current redo,否則無法 OPEN。處理方式:

  1. 從備份還原資料檔
  2. 應用歸檔日志向前推演至最後完整 log
  3. ALTER DATABASE OPEN RESETLOGS 啟動

損毀 log 內的資料將遺失。

隱藏參數 _allow_resetlogs_corruption

極端情況下無法 RESETLOGS 開啟時的最後手段。允許在破壞一致性下強制重置日志開啟資料庫,使用所有資料檔最舊 SCN 開啟,通常需確保 SYSTEM 表空間擁有最舊 SCN。開啟後可能發生 ORA-600 等錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved