Data Recovery Advisor 是11g新特性,是Oracle顧問程序架構的一部分,它會在遇到錯誤時自動收集有關故障信息。如果主動運行Data Recovery Advisor,通??梢栽谟脩舨樵兓騻浞莶僮鳈z查到故障前檢測和修復故障。Data Recovery Advisor可以檢測到諸如塊受損的相對較小的錯誤,也可以檢測到導致數據庫無法成功啟動的錯誤,如缺少聯機重做日志文件,數據文件等。Data Recovery Advisor會主動捕獲這些錯誤。
?
Data Recovery Advisor確定故障后,可以使用EM或RMAN界面查看故障詳情,在Rman中可以使用list backup,advise failure,repair failure和
change failure命令,下面說下這些命令的作用:
?
list failure:列出Data Recovery Advisor記錄的故障;
advise failure:顯示建議修復的選項;
repair failure:使用rman的建議和關閉故障;
change failure:更改狀態或關閉故障。
?
一、list failure命令包含多個選項,具體使用的選項取決于需要查看的錯誤類型:
(1)? failnum:列出每個故障的詳細信息,按故障編號列出,如list failure 42。
(2)? ALL:列出所有故障,如list failure all。
(3)? CRITICAL:列出導致數據庫不可用的故障。
(4)? HIGH:列出導致數據庫不可用的嚴重故障,如缺少數據文件或redo文件
(5)? LOW:列出可以在解決較嚴重故障問題后再予以解決的間歇性故障或優先級較低的故障,如很少使用到的壞塊。
(6)? CLOSED:僅列出關閉的故障。
(7)? EXCLUDE FAILURE:從列表中排除指定的故障號。
(8)? DETAIL:通過展開合并的故障列出故障。例如,如果一個文件中有多個塊損壞,則DETAIL選項將列出每個塊損壞。
注:其中CRITICAL,HIGH,LOW指故障的優先級。
?
如:
RMAN> LIST FAILURE;
RMAN> LIST FAILURE DETAIL;
RMAN> LIST FAILURE 42;
RMAN>LIST FAILURE ALL;
?
二、advise?failure
1)? 顯示輸入故障列表概要
(2)? 包括警告(如果ADR 中出現新故障)
(3)? 顯示手動核對清單
(4)? 列出一個建議的修復選項
(5)? 生成修復腳本(用于自動或手動修復)
?
如:
RMAN>ADVISE FAILURE
?
三、repair failure
repair failure默認會使用本次會話中advise failure所產生的腳本
repair failure preview:不執行修復,而是顯示先前生成的包含所有修復操作和注釋的RMAN 腳本。
repair failure noprompt:不要求確認,repare failure 默認需要確認
?
四、change failure
CHANGE FAILURE 命令用于更改故障優先級或關閉一個或多個故障。
?
語法:
CHANGE FAILURE
{ ALL | CRITICAL | HIGH | LOW |failnum[,failnum,…] }
[ EXCLUDE FAILURE failnum[,failnum,…] ]
{ PRIORITY {CRITICAL | HIGH | LOW} |
CLOSE } - 將故障的狀態更改為已關閉
[ NOPROMPT ] - 不要求用戶進行確認
?
可以使用change? failure改變故障優先級,但只能從high更改為low或low改為high,不能更改citical的優先級。
例如:
RMAN>change failure 307 priority? low;
?
?
五、與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:故障和建議標識符的交叉引用
?
?
?六、下面模擬一個數據故障,然后用RMAN修復該故障:
?1.創建表空間test;
SQL> create tablespace tbs_test01 datafile '+DATA/c1/datafile/tbs_test01.dbf' size 50M;
Tablespace created.
? 2.創建用戶
SQL> create user test identified by xyc default tablespace tbs_test01;
User created.
3.創建表并插入數據提交
SQL> conn test/xyc
Connected.
SQL> create table test01(
? 2? id int,
? 3? name varchar2(32));
Table created.
SQL> insert into test01 values(1,'xyc');
1 row created.
SQL> commit;
4.脫機表空間tbs_test01中數據文件
SQL> alter database datafile 5 offline;
Database altered.
5. 再次插入數據報錯
SQL>? insert into test01?? select * from test01;
?insert into test01?? select * from test01
???????????? *
ERROR at line 1:
ORA-00376: file 5 cannot be read at this time
ORA-01110: data file 5: '+DATA/c1/datafile/tbs_test01.dbf'
6.list failure
RMAN> list failure;
List of Database Failures
=========================
Failure ID Priority Status??? Time Detected Summary
---------- -------- --------- ------------- -------
42???????? HIGH???? OPEN????? 10-SEP-13???? One or more non-system datafiles need media recovery
7.advise failure
RMAN> advise failure;
List of Database Failures
=========================
Failure ID Priority Status??? Time Detected Summary
---------- -------- --------- ------------- -------
42???????? HIGH???? OPEN????? 10-SEP-13???? One or more non-system datafiles need media recovery
analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=43 device type=DISK
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
1. If you restored the wrong version of data file +DATA/c1/datafile/tbs_test01.dbf, then replace it with the correct one
Automated Repair Options
========================
Option Repair Description
------ ------------------
1????? Recover datafile 5?
? Strategy: The repair includes complete media recovery with no data loss
? Repair script: /u01/app/oracle/diag/rdbms/c1/c1/hm/reco_1783687286.hm
8.repair failure
RMAN> repair failure
2> ;
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u01/app/oracle/diag/rdbms/c1/c1/hm/reco_1783687286.hm
contents of repair script:
?? # recover datafile
?? sql 'alter database datafile 5 offline';
?? recover datafile 5;
?? sql 'alter database datafile 5 online';
Do you really want to execute the above repair (enter YES or NO)? yes
executing repair script
sql statement: alter database datafile 5 offline
Starting recover at 10-SEP-13
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 10-SEP-13
sql statement: alter database datafile 5 online
repair failure complete
9.再次插入數據
SQL>? insert into test01?? select * from test01;
1 row created.
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
