程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle11g新特性--RMANDataRecoveryAdvisor(DRA)說明

Oracle11g新特性--RMANDataRecoveryAdvisor(DRA)說明

編輯:關於Oracle數據庫

       一.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 命令。在驗證期間檢測到的所有問題都會顯示出來,這些問題進而會啟動故障評估。如果檢測到故障,則該故障會作為查找結果記錄到ADR中。可以使用LIST FAILURE 命令查看資料檔案庫中記錄的所有故障。

      VALIDATE 命令支持對單個備份集和數據塊進行驗證。在物理損壞中,數據庫根本無法識別塊。在邏輯損壞中,塊的內容在邏輯上不一致。默認情況下,VALIDATE 命令只檢查物理損壞。也可以指定CHECK LOGICAL 檢查邏輯損壞。

      塊損壞可分為塊間損壞和塊內損壞。在塊內損壞中,塊本身發生損壞,可以是物理損壞也可以是邏輯損壞。在塊間損壞中,塊與塊之間發生的損壞只能是邏輯損壞。VALIDATE 命令只檢查塊內損壞。

      調用對數據庫及其組件的預防性健康狀況檢查:

      (1) 健康狀況監視器或RMAN VALIDATE DATABASE 命令

      (2) 檢查邏輯和物理損壞

      (3) 在ADR 中記錄查找結果

      二.DRA 示例

      2.1 創建故障

      SQL> select file_name fromdba_data_files;

      FILE_NAME

      --------------------------------------------------------------------------------

      /u01/app/oracle/oradata/anqing/dave01.dbf

      /u01/app/oracle/oradata/anqing/users01.dbf

      /u01/app/oracle/oradata/anqing/undotbs01.dbf

      /u01/app/oracle/oradata/anqing/sysaux01.dbf

      /u01/app/oracle/oradata/anqing/system01.dbf

      /u01/app/oracle/oradata/anqing/example01.dbf

      --破壞users01.dbf 數據文件:

      [oracle@dave anqing]$ pwd

      /u01/app/oracle/oradata/anqing

      [oracle@dave anqing]$ ll users01.dbf

      -rw-r----- 1 oracle oinstall 34086912 10??11 22:52 users01.dbf

      [oracle@dave anqing]$ echo > users01.dbf

      [oracle@dave anqing]$ ll users01.dbf

      -rw-r----- 1 oracle oinstall 1 10?? 1122:55 users01.dbf

      --在users表空間上創建表:anqing

      SQL> create table anqing(id number)tablespace users;

      create table anqing(id number) tablespaceusers

      *

      ERROR at line 1:

      ORA-01115: IO error reading block fromfile (block # )

      ORA-01110: data file 4:'/u01/app/oracle/oradata/anqing/users01.dbf'

      ORA-27072: File I/O error

      Additional information: 4

      Additional information: 3

      --錯誤信息會寫入ADR,驗證:

      adrci> show homepath

      ADR Homes:

      diag/rdbms/dave/dave

      diag/tnslsnr/dave/listener

      adrci> set homepath diag/rdbms/dave/dave

      adrci> show alert -tail

      …

      2012-10-11 22:53:39.334000 +08:00

      Starting background process SMCO

      SMCO started with pid=33, OS id=11016

      2012-10-1122:56:34.746000 +08:00

      Checker run found 1 newpersistent data failures

      2.2 RMAN LIST FAILURE

      [oracle@dave ~]$rman target /

      Recovery Manager: Release 11.2.0.3.0 -Production on Thu Oct 11 23:06:52 2012

      Copyright (c) 1982, 2011, Oracle and/or itsaffiliates. All rights reserved.

      connected to target database: DAVE(DBID=856255083)

      RMAN> list failure;

      using target database control file insteadof recovery catalog

      List of Database Failures

      =========================

      Failure ID Priority Status Time Detected Summary

      ---------- -------- --------- --------------------

      282 HIGH OPEN 11-OCT-12 One or morenon-system datafiles are corrupt

      注意:

      Listfailure 命令會顯示任何open 狀態的failures,並會優先顯示critical 或high的failure,如果沒有類似的failure,那麼會顯示low 的failures。

      2.3 RMAN ADVISE FAILURE

      RMAN> advise failure;

      List of Database Failures

      =========================

      Failure ID Priority Status Time Detected Summary

      ---------- -------- --------- --------------------

      282 HIGH OPEN 11-OCT-12 One or more non-system datafiles arecorrupt

      analyzing automatic repair options; thismay take some time

      allocated channel: ORA_DISK_1

      channel ORA_DISK_1: SID=18 device type=DISK

      analyzing automatic repair options complete

      Mandatory Manual Actions

      ========================

      no manual actions available

      Optional Manual Actions

      =======================

      no manual actions available

      Automated Repair Options

      ========================

      Option Repair Description

      ------ ------------------

      1 Restore and recover datafile 4

      Strategy: The repair includes complete media recovery with no data loss

      Repair script: /u01/app/oracle/diag/rdbms/dave/dave/hm/reco_1992614502.hm

      --這裡能恢復的前提是有有效的RMAN 備份,否則這裡不能進行restore。

      --這個是恢復的腳本:可以手動執行,也可以使用自動執行:

      [oracle@dave ~]$cat/u01/app/oracle/diag/rdbms/dave/dave/hm/reco_1992614502.hm

      #restore and recover datafile

      restore datafile 4;

      recover datafile 4;

      sql 'alter database datafile 4 online';

      2.4 RMAN REPAIR FAILURE

      RMAN> repair failure preview;

      Strategy: The repair includes completemedia recovery with no data loss

      Repair script:/u01/app/oracle/diag/rdbms/dave/dave/hm/reco_1992614502.hm

      contents of repair script:

      #restore and recover datafile

      restore datafile 4;

      recover datafile 4;

      sql 'alter database datafile 4 online';

      --默認情況下,repair failure 命令會提示用戶確認修復,這裡我們使用noprompt跳過驗證:

      RMAN> repair failure noprompt;

      Strategy: The repair includes completemedia recovery with no data loss

      Repair script:/u01/app/oracle/diag/rdbms/dave/dave/hm/reco_1992614502.hm

      contents of repair script:

      #restore and recover datafile

      restore datafile 4;

      recover datafile 4;

      sql 'alter database datafile 4 online';

      executing repair script

      Starting restore at 11-OCT-12

      using channel ORA_DISK_1

      channel ORA_DISK_1: starting datafilebackup set restore

      channel ORA_DISK_1: specifying datafile(s)to restore from backup set

      channel ORA_DISK_1: restoring datafile00004 to /u01/app/oracle/oradata/anqing/users01.dbf

      channel ORA_DISK_1: reading from backuppiece /u01/backup/ave_lev0_0bnnh6co_1_1_20121011

      channel ORA_DISK_1: piecehandle=/u01/backup/ave_lev0_0bnnh6co_1_1_20121011 tag=DAVE_LEV0

      channel ORA_DISK_1: restored backup piece 1

      channel ORA_DISK_1: restore complete,elapsed time: 00:00:07

      Finished restore at 11-OCT-12

      Starting recover at 11-OCT-12

      using channel ORA_DISK_1

      starting media recovery

      media recovery complete, elapsed time:00:00:01

      Finished recover at 11-OCT-12

      sql statement: alter database datafile 4online

      repair failure complete

      database opened

      RMAN>

      2.5 RMAN CHANGE FAILURE

      Change failure 命令可以改變failure的級別,在2.2 節,我們的failure級別是high。如果有一個failure,在我們沒有修復之前,或者暫時不想修復,那麼我們就可以調低它的級別,級別的修改不影響系統的正常使用。

      如:

      RMAN> CHANGEFAILURE 282 PRIORITY LOW;

      2.6 驗證 VALIDATE

      # Check for physical corruption of alldatabase files.

      VALIDATE DATABASE;

      # Check for physical and logical corruptionof a tablespace.

      VALIDATE CHECK LOGICAL TABLESPACE USERS;

      # Check for physical and logical corruptionof a datafile.

      VALIDATE CHECK LOGICAL DATAFILE 4;

      # Check for physical corruption of allarchived redo logs files.

      VALIDATE ARCHIVELOG ALL;

      # Check for physical and logical corruptionof the controlfile.

      VALIDATE CHECK LOGICAL CURRENT CONTROLFILE;

      # Check for physical and logical corruptionof a specific backupset.

      VALIDATE CHECK LOGICAL BACKUPSET 3;

      # Check for physical corruption of files tobe backed up.

      BACKUP VALIDATE DATABASE ARCHIVELOG ALL;

      # Check for physical and logical corruptionof files to be backed up.

      BACKUP VALIDATE CHECK LOGICAL DATABASEARCHIVELOG ALL;

      # Check for physical corruption of files tobe restored.

      RESTORE VALIDATE DATABASE;

      # Check for physical and logical corruptionof files to be restored.

      RESTORE VALIDATE CHECK LOGICAL DATABASE;

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved