Oracle11g新特性--RMANDataRecoveryAdvisor(DRA)说明(二)

2014-11-24 09:23:44 · 作者: · 浏览: 1
示:不执行修复,而是显示先前生成的包含所有修复操作和注释的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