一.Data Recovery Advisor(DRA) 說明
1.1 DRA 說明
DRA在遇到錯誤時會自動收集數據故障信息。此外,它還能預先檢查故障。在此模式中,它可以在數據庫進程發現損壞並發送錯誤消息之前檢測和分析數據故障(請注意,修復始終在人為控制之下進行)。
數據故障可能非常嚴重。例如,如果缺少最新的日志文件,則無法啟動數據庫。一些數據故障(如數據文件中的塊損壞)不是災難性故障,因為它們不會使數據庫停機,也不會阻止您啟動Oracle 實例。數據恢復指導可處理以下兩種情況:一種情況是您無法啟動數據庫(因為缺少一些必需的數據庫文件,或者這些數據庫文件不一致或已損壞),另一種情況是運行時發現文件損壞。
解決嚴重數據故障的首選方法是首先將故障轉移至備用數據庫(前提是在Data Guard 配置下),這樣用戶就可以盡快恢復聯機。然後,需要修復數據故障的主要原因,但幸運的是,此操作不會影響用戶。
1.2 自動診斷工作流
Oracle Database11g 中的自動診斷工作流可為您執行工作流步驟。使用數據恢復指導,您只需啟動建議和修復。
1. 健康狀況監視器會自動執行檢查,並將故障及其故障現象作為“查找結果”記錄到自動診斷資料檔案庫(ADR) 中。
2. 數據恢復指導將查找結果與故障合並在一起。它列出了先前執行的評估結果,其中包含故障嚴重程度(嚴重或高)。
3. 如果您要求系統提供有關故障的修復建議,數據恢復指導會將故障映射到自動和手動修復選項,檢查基本可行性,並為您提供修復建議。
4. 可以選擇手動執行修復或者請求數據恢復指導為您執行此操作。
5. 除了健康狀況監視器和數據恢復指導自動執行的主要“被動”檢查之外,Oracle 還建議使用VALIDATE 命令進行“預防性”檢查。
1.3 RMAN中使用DRA 步驟
Oracle的OEM已經很智能,這些操作在OEM上都可以進行,我們這裡只看使用RMAN 命令來實現的步驟。
如果懷疑或已知道數據庫出現故障,則可使用LIST FAILURE 命令獲得關於這些故障的信息。可以列出所有故障或部分故障並以多種方式限制輸出。故障由故障號進行唯一標識。請注意,這些故障號不是連續的,因此它們之間的間隔沒有任何意義。
ADVISE FAILURE 命令將顯示為指定故障建議的修復選項。它可打印輸入故障概要並隱式關閉已修復的所有打開的故障。沒有使用任何選項時,默認行為是對記錄在ADR 中優先級為CRITICAL 和HIGH的所有故障提供建議。
在同一RMAN 會話中REPAIR FAILURE 命令在ADVISE FAILURE 命令後使用。默認情況下,該命令使用當前會話中上次執行ADVISEFAILURE 命令時建議的一個修復選項。如果沒有任何修復選項,REPAIR FAILURE 命令將啟動隱式ADVISE FAILURE 命令。修復完成後,該命令會關閉故障。
CHANGE FAILURE 命令將更改故障優先級或關閉一個或多個故障。僅可以更改HIGH 或LOW 故障優先級。修復故障後,將隱式關閉打開的故障。但是,也可以顯式關閉故障。
1.3.1 列出數據故障
RMAN LISTFAILURE 命令可列出故障。如果目標實例使用恢復目錄,它可以處於STARTED 模式下,否則必須處於MOUNTED 模式下。LIST FAILURE 命令不啟動診斷新故障檢查;它將列出先前執行的評估結果。重復執行LIST FAILURE 命令將重新驗證所有現有的故障。
如果數據庫診斷出新的故障(在命令執行之間),則會顯示這些新故障。
如果用戶手動修復故障或臨時故障消失,則數據恢復指導會將這些故障從LIST FAILURE 輸出中刪除。
以下是語法說明:
(1) failnum:為其顯示修復選項的故障數。
(2) ALL:列出所有優先級的故障。
(3) CRITICAL:列出優先級為CRITICAL 且處於OPEN 狀態的故障。這些故障使整個數據庫不可用(如控制文件缺失),因此需要立即引起注意。
(4) HIGH:列出優先級為HIGH 且處於OPEN狀態的故障。這些故障使數據庫部分不可用或不可恢復,因此應盡快修復(如歸檔重做日志缺失)。
(5) LOW:列出優先級為LOW 且處於OPEN狀態的故障。低優先級的故障可以等到修復了更重要的故障後再進行修復。
(6) CLOSED:僅列出關閉的故障。
(7) EXCLUDE FAILURE:從列表中排除指定的故障號。
(8) DETAIL:通過展開合並的故障列出故障。例如,如果一個文件中有多個塊損壞,則DETAIL選項將列出每個塊損壞。
如:
RMAN> LIST FAILURE;
RMAN> LIST FAILURE DETAIL;
1.3.2 修復建議
RMAN ADVISE FAILURE 命令可顯示指定故障的建議修復選項。如果從Enterprise Manager 中執行此命令,則Data Guard 將顯示一個修復選項(但是,如果直接從RMAN 命令行執行此命令,則Data Guard 不會顯示修復選項)。ADVISE FAILURE 命令可打印輸入故障概要。該命令會隱式關閉已修復的所有打開的故障。
沒有使用任何選項時,默認行為是對記錄在自動診斷資料檔案庫(ADR) 中優先級為CRITICAL 和HIGH 的所有故障提供建議。如果自上次執行LIST FAILURE 命令後ADR 中記錄了新故障,則在對所有CRITICAL 和HIGH 故障提供建議前,該命令將包含一個WARNING。
執行兩個常規修復選項:無數據丟失修復和數據丟失修復。
DRA在生成自動修復選項時會生成一個腳本,用於顯示RMAN 計劃如何修復故障。如果不希望數據恢復指導自動修復故障,可從該腳本開始執行手動修復。該腳本的操作系統(OS) 位置將顯示在命令輸出的末尾。可以檢查此腳本,並對其進行自定義(如果需要),還可以手動執行該腳本(例如在審計線索要求建議執行手動操作時)。
RMANADVISE FAILURE 命令有以下用途:
(1) 顯示輸入故障列表概要
(2) 包括警告(如果ADR 中出現新故障)
(3) 顯示手動核對清單
(4) 列出一個建議的修復選項
(5) 生成修復腳本(用於自動或手動修復)
. . .
Repair script:
/u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979128860.hm
RMAN>
語法:
ADVISE FAILURE
[ ALL | CRITICAL | HIGH | LOW |failnum[,failnum,…] ]
[ EXCLUDE FAILURE failnum [,failnum,…] ]
1.3.3 執行修復
此命令應在同一RMAN 會話中的ADVISE FAILURE 命令後使用。默認情況下(沒有選項),該命令使用當前會話中上次執行ADVISE FAILURE 時建議的一個修復選項。如果沒有任何修復選項,REPAIRFAILURE 命令將啟動隱式ADVISE FAILURE 命令。
默認情況下,您需要確認是否執行該命令,因為可能需要花費時間完成大量更改。在執行修復期間,該命令的輸出將表明正在執行的修復階段。
修復完成後,該命令會關閉故障。
語法:
REPAIR FAILURE
[PREVIEW]
[NOPROMPT]
無法運行多個並發修復會話。但是,允許並發REPAIR … PREVIEW 會話。
(1) PREVIEW 表示:不執行修復,而是顯示先前生成的包含所有修復操作和注釋的RMAN 腳本。
(2) NOPROMPT 表示:不要求確認。
修復故障示例
RMAN> REPAIR FAILURE PREVIEW;
RMAN> REPAIR FAILURE;
RMANREPAIR FAILURE 命令有以下用途:
(1) 遵循ADVISE FAILURE 命令
(2) 修復指定的故障
(3) 關閉已修復的故障
1.4 分類(和關閉)故障
CHANGE FAILURE 命令用於更改故障優先級或關閉一個或多個故障。
語法:
CHANGE FAILURE
{ ALL | CRITICAL | HIGH | LOW |failnum[,failnum,…] }
[ EXCLUDE FAILURE failnum[,failnum,…] ]
{ PRIORITY {CRITICAL | HIGH | LOW} |
CLOSE } - 將故障的狀態更改為已關閉
[ NOPROMPT ] - 不要求用戶進行確認
只能將故障優先級從HIGH 更改為LOW 和從LOW 更改為HIGH。更改CRITICAL 優先級會出現錯誤。(將故障的優先級從HIGH 更改為LOW 的一個原因是為了避免該故障顯示在LIST FAILURE 命令的默認輸出列表中。例如,如果塊損壞具有HIGH 優先級,則該塊位於很少使用的表空間中時,您可能希望將其臨時更改為LOW。)
修復故障後,將隱式關閉打開的故障。但是,也可以顯式關閉故障。這需要重新評估其它所有打開的故障,因為其中的某些故障會因故障關閉而變得不相關。
默認情況下,該命令要求用戶確認請求的更改。
1.5 DRA相關的視圖
查詢動態數據字典視圖:
(1) V$IR_FAILURE:所有故障的列表,包括已關閉的故障(LIST FAILURE 命令的結果)
(2) V$IR_MANUAL_CHECKLIST:手動建議的列表(ADVISE FAILURE命令的結果)
(3) V$IR_REPAIR:修復列表(ADVISE FAILURE 命令的結果)
(4) V$IR_FAILURE_SET:故障和建議標識符的交叉引用
1.6 預防性檢查
對於非常重要的數據庫,可能需要執行其它預防性檢查(可以在每天的低峰時段執行)。
可通過健康狀況監視器或使用RMANVALIDATE 命令安排定期的健康狀況檢查。通常,如果被動檢查在數據庫組件中檢測到故障,則可能需要對受影響的組件執行更全面的檢查。
RMAN VALIDATE DATABASE 命令用於調用對數據庫及其組件的健康狀況檢查。它擴展了現有的VALIDATE BACKUPSET