Oracle 11g 引入 Data Recovery Advisor (DRA),將資料庫故障診斷、修復建議、自動修復整合為一套智慧化工作流。本文系統梳理 DRA 核心架構、RMAN 指令操作流程、實戰演練與預防性檢查,助你構建自癒合的資料保護體系。
優先策略:Data Guard 環境下優先切換至備庫恢復服務,再修復主庫根因。
VALIDATE DATABASE 主動發現潛在損壞RMAN> LIST FAILURE; -- 列出 OPEN 狀態的 CRITICAL/HIGH 故障
RMAN> LIST FAILURE ALL; -- 列出所有優先級
RMAN> LIST FAILURE DETAIL; -- 展開合併故障(如多區塊損壞)
RMAN> LIST FAILURE CRITICAL; -- 僅嚴重級
RMAN> LIST FAILURE EXCLUDE FAILURE 100; -- 排除特定故障號
模式要求:使用恢復目錄時可為 STARTED,否則需 MOUNTED。
RMAN> ADVISE FAILURE; -- 預設針對 CRITICAL+HIGH
RMAN> ADVISE FAILURE ALL; -- 所有優先級
RMAN> ADVISE FAILURE 282, 283; -- 指定故障號
RMAN> ADVISE FAILURE EXCLUDE FAILURE 282; -- 排除
輸出包含:故障摘要、手動檢查清單、自動修復選項(無資料遺失/資料遺失)、修復腳本路徑(如 /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979128860.hm)。
RMAN> REPAIR FAILURE PREVIEW; -- 僅顯示腳本內容,不執行
RMAN> REPAIR FAILURE; -- 執行(預設提示確認)
RMAN> REPAIR FAILURE NOPROMPT; -- 無提示直接執行
限制:同一時間僅允許一個修復會話;修復完成自動關閉故障。
RMAN> CHANGE FAILURE 282 PRIORITY LOW; -- 降級優先級(HIGH↔LOW 互轉,CRITICAL 不可改)
RMAN> CHANGE FAILURE ALL CLOSE; -- 顯式關閉故障(觸發重新評估)
-- 破壞 users01.dbf
[oracle]$ echo > /u01/app/oracle/oradata/anqing/users01.dbf
-- 嘗試建表觸發錯誤
SQL> CREATE TABLE anqing(id NUMBER) TABLESPACE users;
ORA-01115: IO error reading block from file...
ADR 自動記錄:Checker run found 1 new persistent data failures
RMAN> LIST FAILURE;
-- Failure 282 HIGH OPEN: One or more non-system datafiles are corrupt
RMAN> ADVISE FAILURE;
-- Option 1: Restore and recover datafile 4 (完整介質恢復,無資料遺失)
-- Repair script: /u01/app/oracle/diag/rdbms/dave/dave/hm/reco_1992614502.hm
RMAN> REPAIR FAILURE PREVIEW; -- 確認腳本內容
RMAN> REPAIR FAILURE NOPROMPT; -- 執行修復
-- 輸出:restore datafile 4; recover datafile 4; alter database datafile 4 online;
-- 完成後:repair failure complete, database opened
| 視圖 | 用途 |
|---|---|
| V$IR_FAILURE | 所有故障清單(含已關閉),對應 LIST FAILURE |
| V$IR_MANUAL_CHECKLIST | 手動建議清單,對應 ADVISE FAILURE |
| V$IR_REPAIR | 修復選項清單,對應 ADVISE FAILURE |
| V$IR_FAILURE_SET | 故障與建議識別碼交叉引用 |
-- 物理+邏輯損壞檢查
RMAN> VALIDATE CHECK LOGICAL DATABASE;
RMAN> VALIDATE CHECK LOGICAL TABLESPACE USERS;
RMAN> VALIDATE CHECK LOGICAL DATAFILE 4;
RMAN> VALIDATE CHECK LOGICAL BACKUPSET 3;
RMAN> VALIDATE CHECK LOGICAL CURRENT CONTROLFILE;
-- 僅物理損壞
RMAN> VALIDATE DATABASE;
RMAN> VALIDATE ARCHIVELOG ALL;
-- 備份/還原前驗證
RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
RMAN> RESTORE VALIDATE DATABASE;
RMAN> RESTORE VALIDATE CHECK LOGICAL DATABASE;
損壞分類:區塊內損壞(物理/邏輯)、區塊間損壞(僅邏輯)。VALIDATE 僅檢測區塊內損壞。
DRA 將資料庫故障處理從「被動救火」升級為「主動診斷、自動修復、腳本可審計」的標準化流程,是 11g 以降高可用架構的核心組件。建議納入日常巡檢與應急預案演練體系。