(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