诊断和响应故障_使用数据恢复顾问(Data Recovery Advisor)诊断和修复故障
Posted 数语数行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了诊断和响应故障_使用数据恢复顾问(Data Recovery Advisor)诊断和修复故障相关的知识,希望对你有一定的参考价值。
本章阐述如何使用RMAN中的数据恢复顾问(Data Recovery Advisor)工具来诊断和修复数据库故障。
1.数据恢复顾问概述
1.1.数据恢复顾问目的
数据恢复顾问是一个可以自动诊断数据故障,确认和提出合适的修复选项和在用户的请求下执行修复的Oracle数据库工具。
在这个背景中,数据故障是磁盘上的持久数据损坏或丢失。通过提供一个集中的工具来自动修复数据,数据恢复顾问改善了Oracle数据库的易管理性和可靠性,因此帮助减少了MTTR(平均恢复时间)。
诊断数据故障和设计修复的最佳策略要求有高度的培训和经验。数据恢复顾问比传统的修复技术提供以下优势:
1)数据恢复顾问可以潜在地在数据库进程发现损坏和报错前检测,分析和修复数据故障。早期的警告帮助限制损坏造成的损失。
2)手动评估数据故障的症状和关联它们到问题说明可能是复杂,容易出错和花费时间的。数据恢复顾问自动诊断故障,评估它们的影响和报告这些发现给用户。
3)传统上,用户必须手动与修复影响一起确认修复选项。如果出现多个故障,那么用户必须决定执行修复的正确顺序和尝试合并修复。相反,数据恢复顾问自动决定最佳修复选项和运行检查来确保这些选项在你的环境中是可行的。
4)数据修复的执行可能是复杂和容易出错的。如果选项自动修复选项,那么数据恢复顾问执行修复和核实它的成功。
1.2.数据恢复顾问的基本概念
1.2.1.数据恢复顾问的用户接口
数据恢复顾问同时有命令行和GUI界面。GUI界面在OEM Cloud Control中可用。
在RMAN命令行界面中,数据恢复顾问命令是LIST FAILURE,ADVISE FAILURE,REPAIR FAILURE和CHANGE FAILURE。
注:数据恢复顾问命令不支持RAC数据库。
故障由数据库自动或通过手动检查如VALIDATE命令检测。可以使用LIST FAILURE命令来查看故障的问题说明和这些故障对数据库操作造成的影响。每个故障通过故障号唯一鉴别。在相同的RMAN会话中,可以使用ADVISE FAILURE命令来查看修复选项,一般同时包括自动和手动选项。
在执行ADVISE FAILURE之后,可以手动修复故障或运行REPAIR FAILURE命令来自动修复故障。修复是一个纠正一个或多个故障的行为。修复的示例包括块介质恢复,数据文件介质恢复和Oracle闪回数据库。当选择自动修复选项时,数据恢复顾问核实修复成功和关闭相关修复的故障。
1.2.2.关于数据完整性检查
检查是一个诊断的操作或使用Health Monitor注册的程序来评估数据库或它的组件的健康。
健康评估也被称为数据完整性检查和可以反应性地或主动地调用。
故障通常被反应性地检测到。涉及损坏数据的数据库操作导致错误,它自动调用数据完整性检查来搜索数据库发现与错误相关的故障。如果故障诊断过,那么它们记录在自动诊断仓库(Automatic Diagnostic Repository,ADR)中,它是一个存储在数据库之外的目录结构。可以使用数据恢复顾问来产生修复建议和只在故障被数据库检测到和存储在ADR之后修复故障。
也可以主动调用数据库完整性检查。可以通过Health Monitor执行检查,它像反应性地调用检查一样以相同的方式检测和存储故障。也可以使用VALIDATE和BACKUP VALIDATE命令检查块损坏。
1.2.3.关于故障
故障是一个由数据完整性检查检测到的持久数据损坏。
故障可以表明它自己作为可观察到的症状比如错误信息和警报,但故障与症状不同,因为它代表一个诊断的问题。在数据库诊断问题为故障后,可以使用数据恢复顾问获取关于故障和潜在地修复它的信息。
由于故障信息不是存储在数据库中的,数据库不需要处于打开或挂载状态来访问它们。当数据库以NOMOUNT模式启动时可以查看故障。因此,控制文件和恢复目录的可用性不影响查看检测到的故障的能力,虽然它可能会影响某些修复的可行性。
数据恢复顾问可以诊断诸如以下的故障:
1)组件比如数据文件和控制文件因为它们不存在,没有正确的访问权限,已经被脱机等而不能访问。
2)物理损坏比如块校验和失败和无效的块头字段值。
3)不一致比如数据文件比其它数据库文件更旧。
4)I/O故障比如硬件错误,操作系统驱动故障和超过操作系统资源限制(例如,打开文件的数量)。
数据恢复顾问可能检测到或处理某些逻辑损坏。一般来说,这个类型的损坏要求Oracle支持服务的帮助。
1.2.3.1.关于故障状态
每个故障有一个故障状态:OPEN或CLOSED。
故障状态是OPEN直到合适的修复行为被调用。在故障修复之后状态更改为CLOSED。
每当执行LIST FAILURE,数据恢复顾问重新验证所有打开的故障和关闭不再存在的故障。因此,如果作为单独的过程修正某些故障,或如果故障是短暂的自己会消失的问题,运行LIST FAILURE会自动关闭它们。
可以使用CHANGE FAILURE来更改打开故障的状态为CLOSED,如果已经手动修正了它。然而,只有如果某些原因故障没有自动关闭,使用CHANGE FAILURE … CLOSED才有意义。当使用CHANGE手动关闭时,如果故障仍然存在,当执行合适的数据完整性检查时,那么数据恢复顾问使用不同的故障ID重新创建它。
1.2.3.2.关于故障优先级
每个故障都有一个故障优先级:CRITICAL,HIGH或LOW。数据恢复顾问只分配CRITICAL或HIGH优先级给诊断的故障。
优先级为CRITICAL的故障需要立即注意因为它们让整个数据库不可用。例如,包含当前控制文件的磁盘可能有故障。优先级为HIGH的故障让部分数据库不可用或不可恢复,通常需要快速修复。示例包括块损坏和缺少归档redo日志。
如果故障被分配HIGH优先级,但故障对数据库可用性和可恢复性只有轻微的影响,那么你可以降级优先级为LOW。LOW优先级标示故障可以被忽略直到更重要的故障被修正为止。
缺省情况下,LIST FAILURE只显示优先级为CRITICAL和HIGH的故障。可以使用CHANGE命令来更改LOW和HIGH故障的状态,但不能更改CRITICAL故障的状态。更改优先级为LOW的主要原因是减少LIST FAILURE的输出。如果这时(例如,因为另外一个故障)故障不能被重新验证,那么LIST FAILURE显示故障为OPEN。
1.2.3.3.关于故障分组
为了清晰,数据恢复顾问将相关的故障分组集合。
例如,如果文件的20个不同的块损坏,那么这些故障被分组在一个单一的父故障下。缺省情况下,数据恢复顾问列出关于故障组的信息,虽然可以指定DETAIL选项来列出关于个别子故障的信息。
子故障有与故障相同的格式。可以获取子故障的处理建议和单独或与任何其它故障结合来修复它。
1.2.4.关于手动操作和自动修复选项
命令ADVISE FAILURE可以同时展现手动和自动修复选项。数据恢复顾问将手动操作分类为强制的或可选的。
在某些情况中,唯一可能的操作是手动的。假设丢失的控制文件不存在备份。在这种情况中,手动操作是执行CREATE CONTROLFILE语句。数据恢复顾问将这个手动操作呈现为强制性的,因为没有自动修复可用。相反,假设缺失的数据文件的RMAN备份存在。在这种情况中,REPAIR FAILURE命令可以通过还原和恢复数据文件自动执行修复。可选的手动操作是还原数据文件如果它被意外地重命名或移动。数据恢复顾问建议可选的手动操作,如果它可能阻止更极端的修复形式比如数据文件还原和恢复。
与手动操作对比,自动修复可以由数据恢复顾问执行。ADVISE FAILURE命令为每个自动修复选项展现选项ID和总结这个操作。
数据恢复顾问在推荐一个自动修复之前执行可行性检查。例如,数据恢复顾问检查所有介质恢复需要的备份和归档redo日志是存在的和一致的。数据恢复顾问可能需要特定的备份和归档redo日志。如果恢复需要的文件不可用,那么恢复是不可能的。
注:由于性能的原因,数据恢复顾问不会详尽地检查每个文件的每个字节。因此,一个可行的修复可能仍然会因为损坏的备份或归档redo日志文件而失败。
1.2.4.1.关于整合的修复
当可能时,数据恢复顾问合并纠正多个故障的修复为一个单一的修复。整合的修复可能包含多个步骤。
某些时候一个整合的修复是不可能的,如当一个故障阻止为其它故障创建修复时。例如,当控制文件缺失时,数据文件修复的可行性不能被确认。在这些情况中,数据恢复顾问为可修复的故障生成修复选项和打印信息陈述某些选择的故障这时不能被修复。在执行提议的修复之后,可以重复LIST,ADVISE和REPAIR序列来修复剩余的故障。
1.2.4.2.关于修复脚本
不管何时数据恢复顾问生成自动修复选项,它创建一个脚本来解释RMAN打算使用哪些命令来修复故障。数据恢复顾问打印脚本的位置,它是一个位于操作系统中的文本文件。
以下的示例修复脚本显示数据恢复顾问如何计划修复丢失的数据文件27。
# restore and recover data file
ALTER DATABASE DATAFILE 27 OFFLINE;
restore datafile 27;
recover datafile 27;
ALTER DATABASE DATAFILE 27 ONLINE;
如果不想数据恢复顾问来自动修复故障,那么可以复制这个脚本,编辑它和手动执行它。
1.2.5.关于数据恢复顾问支持的数据库配置
数据恢复顾问只在某些数据库配置上受支持。
1.2.5.1.关于数据恢复顾问和Oracle RAC
数据恢复顾问只支持单实例的数据库。Oracle RAC数据库不受支持。
如果数据故障发生使所有Oracle RAC实例宕机,那么可以在单实例模式中挂载数据库,使用数据恢复顾问检测和修复控制文件,SYSTEM数据文件和数据字典故障。也可以主动调用数据恢复检查来为数据故障测试其它数据库组件。这种方式不能检测到其它集群实例的本地的数据故障,例如,不能访问的数据文件。
1.2.5.2.关于数据恢复顾问和Oracle Data Guard
在Oracle Data Guard环境中使用数据恢复顾问有一些限制。
在Data Guard环境中,数据恢复顾问不能做以下操作:
1)使用物理备数据库的文件来修复主数据库上的故障
2)诊断和修复备数据库上的故障
然而,如果主数据库不可用,那么数据恢复顾问可能推荐故障切换到备数据库。在切换之后可以修复旧主数据库。如果正在Data Guard配置中使用OEM Clould Control,那么可以通过数据恢复推荐界面发起故障切换。
1.3.诊断的基本步骤和修复故障
当怀疑或发现故障时数据恢复顾问工作流程开始。可以在多种方法中发现故障,包括错误信息,警报,跟踪文件和失败的数据完整性检查。
如章节“关于数据完整性检查”所述,当错误发生时数据库可以自动诊断故障。
为了响应故障,启动RMAN会话和在相同的会话中按列出的顺序执行所有以下步骤:
1)运行LIST FAILURE命令列出故障。
2)如果怀疑数据库没有自动诊断的故障存在,那么运行VALIDATE DATABASE来检查损坏块和缺失的文件。
如果VALIDATE检测到了问题,那么RMAN触发故障评估执行。如果故障被检测到,那么RMAN记录它到ADR(Automated Diagnostic Repository),它能够被数据恢复顾问访问。
3)运行ADVISE FAILURE命令来确认修复选项。
4)选择修复选项。可以手动修复故障或运行REPAIR FAILURE命令来自动修复它们。
5)回到第1步来确认所有做已经被修复或确认剩下哪些故障。
按照与本节列出的不同的顺序执行诊断和修复故障的步骤可能会导致错误。
如果合适,可以在数据恢复顾问工作流程中的任何时间使用CHANGE FAILURE命令更改故障的优先级从LOW到HIGH或从HIGH到LOW,或关闭已经手动纠正的故障。
2.列出故障
如果你怀疑或知道一个或多个数据库故障已经发生,那么使用LIST FAILURE来获取关于它们的信息。
可以列出所有故障或故障子集,以不同的方式限制输出。故障通过故障序号唯一鉴别。这些序号不是连续的,所以故障序号之间的间隔没有重要的意义。
命令LIST FAILURE不执行数据完整性检查来诊断新的故障,而是列出之前执行的评估的结果。因此,只有数据库自动诊断故障以响应在命令执行之间发生的错误,重复执行LIST FAILURE才会显示新的故障。然而,执行LIST FAILURE导致数据恢复顾问重新验证所有存在的故障。如果用户手动纠正了故障,或如果短暂的故障消失了,那么数据恢复顾问从LIST FAILURE输出中移除这些故障。如果故障在这个时候不能被重新验证(例如,由于其它的故障),LIST FAILURE显示故障为OPEN。
2.1.列出所有故障
确认数据库遇到的问题的最简单的方法是使用LIST FAILURE命令。
列出所有故障:
1)启动RMAN,连接到目标数据库。目标数据库实例必须启动。
2)执行LIST FAILURE命令。
以下示例报告数据恢复顾问已知的所有故障。
RMAN>LIST FAILURE;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-systemdatafiles are missing
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks
在这个示例中,RMAN报告两个不同的故障:一组缺失的数据文件和一个数据文件有坏块。输出为每个故障标示唯一的标识符(142和101),优先级,状态和检测时间。
3)可选地,执行LIST FAILURE … DETAIL单独地列出故障。
数据恢复顾问当可能的时候合并故障。指定DETAIL选项单独地列出故障。例如,如果一个文件中存在多个块损坏,那么指定DETAIL选项一句出每个块损坏。以下示例列出关于故障101的详细信息。
RMAN> LIST FAILURE 101 DETAIL;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks
List of child failures for parent failure ID 101
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
104 HIGH OPEN 23-APR-13 Block 56416 in
datafile 1: '/disk1/oradata/prod/system01.dbf' is media corrupt
Impact: Object BLKTEST owned by SYS might be unavailable
4)继续在“确认修复选项”中确认如何修复由命令LIST FAILURE显示的故障。
2.2.列出故障子集
除了提供更冗长的输出,LIST FAILURE也可以限制输出。
例如,可以执行LIST FAILURE和CRITICAL,HIGH,LOW或CLOSED选项只列出特定状态或优先级的故障。也可以通过指定EXCLUDE FAILURE从输出中排除特定的故障。
列出故障子集:
1)启动RMAN,连接到目标数据库。目标数据库实例必须启动。
2)执行LIST FAILURE命令和期望的选项。
LIST FAILURE LOW;
LIST FAILURE CLOSED;
LIST FAILURE EXCLUDE FAILURE 234234;
3.通过验证数据库来检查块损坏
当用户事务尝试访问损坏的数据时,数据库反应性地调用数据完整性检查。在某些情况中,潜伏的故障可能未被检测到。
例如,当数据块损坏错误发生时,数据库反应性地执行数据完整性检查来验证错误发生的块和其它紧邻的块。然而,在邻近以外的块也可能损坏了。同时,从不被数据库读取的损坏块从不会被反应性数据完整性检查检测到。
一个有效的主动执行数据完整性检查方法是在RMAN中运行VALIDATE或BACKUP VALIDATE命令。这些命令可以检查数据文件和控制文件中的物理和逻辑损坏。如果RMAN发现块损坏,那么它记录它们到自动诊断仓库ADR和创建一个或多个故障。这时可以使用数据恢复顾问来列出关于故障的信息和修复它们。
验证数据库:
1)启动RMAN,连接到目标数据库。目标数据库实例必须被挂载。
2)验证期望的数据库文件。
以下示例使用VALIDATE DATABASE来检查整个数据库中的物理和逻辑损坏。因为LIST FAILURE中显示某些数据文件缺失,因此指定了SKIP INACCESSIBLE子语句。输出中显示system01.dbf数据库文件有一个新的损坏块(Blocks Failing)和之前没有块被标记为损坏(Marked Corrupt)。
RMAN> VALIDATE CHECK LOGICAL SKIP INACCESSIBLE DATABASE;
Starting validate at 23-APR-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=103 device type=DISK
could not access datafile 28
skipping inaccessible file 28
RMAN-06060: WARNING: skipping datafile compromises tablespace USERS recoverability
RMAN-06060: WARNING: skipping datafile compromises tablespace USERS recoverability
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00001 name=/disk1/oradata/prod/system01.dbf
input datafile file number=00002 name=/disk1/oradata/prod/sysaux01.dbf
input datafile file number=00022 name=/disk1/oradata/prod/undotbs01.dbf
…
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1 FAILED 0 3536 57600 637711
File Name: /disk1/oradata/prod/system01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 1 41876
Index 0 7721
Other 0 4467
4.确认修复选项
在RMAN会话中运行LIST FAILURE之后使用ADVISE FAILURE命令来显示修复选项。这个命令打印故障总结和内含地关闭所有修复了的OPEN故障。
在合适的时候,命令ADVISE FAILURE展现手动和自动修复选项的列表。手动选项,作为强制或可选来分类,首先出现。在某些情况中,可选的手动纠正可以避免更极端的操作比如还原和恢复数据文件。作为一个规则,使用对数据库有最少影响和最低错误可能性的的修复技术。
4.1.确认所有故障的修复选项
如果一个或多个故障存在,那么通常使用LIST FAILURE来显示关于故障的信息,然后在相同的RMAN会话中使用ADVISE FAILURE来获取修复选项的报告。
确认所有故障的修复选项:
1) 列出所有的故障。
2) 在相同的RMAN会话中,执行ADVISE FAILURE。
以下示例请求数据恢复顾问已知的所有故障的修复选项。
RMAN> ADVISE FAILURE;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-systemdatafilesare missing
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it
Automated Repair Options
========================
Option Repair Description
------ ------------------
1 Restore and recover datafile 28; Perform block media recovery ofblock 56416 in file 1
Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_660500184.hm
在这个示例中,ADVISE FAILURE报告两个故障:缺失的数据文件和一个数据文件有坏块。这个命令没有列出强制的手动操作,但它建议确保缺失的数据文件没有被意外地重命名或移动。自动修复选项涉及块介质恢复和还原和恢复缺失的数据文件。ADVISE FAILURE列出了修复脚本的位置。
以下变化的示例显示当需要用来自动修复的RMAN备份或归档redo日志不可用时的输出。命令ADVISE FAILURE现在显示强制的手动操作。
RMAN> ADVISE FAILURE;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-systemdatafilesare missing
101 HIGH OPEN 23-APR-13 Datafile 1:
'/disk1/oradata/prod/system01.dbf' contains one or more corruptblocks
analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=103 device type=DISK
analyzing automatic repair options complete
Mandatory Manual Actions
========================
1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it
2. Contact Oracle Support Services if the preceding recommendations
cannot beused, or if they do not fix the failures selected for repair
Optional Manual Actions
=======================
no manual actions available
Automated Repair Options
========================
Option Repair Description
------ ------------------
1 Perform block media recovery of block 56416 in file 1
Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_1863891774.hm
4)继续“修复故障”确认如何修复显示在命令LIST FAILURE输出中的故障。
4.2.确认故障子集的修复选项
也可以为特定的故障请求选项。可以通过状态(CRITICAL,HIGH或LOW)或故障序号指定故障。也可以使用EXCLUDE FAILURE从报告中排除一个或多个故障。
为故障子集确认修复选项:
1)列出所有的故障。
2)在相同的RMAN会话中,执行ADVISE FAILURE和期望的选项。
以下示例只为故障101请求修复选项。
RMAN> ADVISE FAILURE 101;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
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 Perform block media recovery of block 56416 in file 1
Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_708819503.htm
3)继续“修复故障”确认如何修复命令LIST FAILURE显示的故障。
5.修复故障
可以使用数据恢复顾问自动修复故障。
5.1.关于修复故障
如果ADVISE FAILURE建议手动修复,那么首先尝试这些。如果不可能手动修复,或如果不能修复所有故障,那么可以使用REPAIR FAILURE自动修复故障(在当前RMAN会话中的最近的ADVISE FAILURE命令中建议的)。
缺省情况下,REPIAR FAILURE在它开始执行之前提示确认。可以通过指定NOPROMPT选项来抑制确认提示。在启动执行之后,命令标示修复的当前进度。取决于情况,RMAN可能会提示进行响应。在执行修复之后,RMAN重新评估所有存在的故障,期望在修复的过程中已经纠正所有故障。
当修复故障时,只要有可能,RMAN将文件脱机,还原和恢复它,然后再将它联机。可以为选择的数据库,表空间或数据文件修复故障。
在执行修复之前,一般建议指定PREVIEW选项预览它。RMAN不会做任何的修复,生成一个包含所有修复操作和注释的脚本。如果不指定一个特定的修复选项,那么RMAN使用当前会话中最近的ADVISE FAILURE命令的第一个修复选项。缺省情况下,修复脚本会显示在标准输出中。可以使用SPOOL命令来将脚本写到一个可编辑的文件。
5.2.修复故障
缺省情况下,脚本显示到标准输出中。可以使用SPOOL命令将脚本写到一个可编辑的文件中。
修复故障:
1) 列出“列出所有故障”中描述的所有故障。
2) 显示“确认修复选项”中描述的修复选项。
3)可选地,执行REPAIR FAILURE PREVIEW。
以下示例预览RMAN会话中之前的ADVISE FAILURE命令中显示的第一个修复选项。
RMAN> REPAIR FAILURE PREVIEW;
Strategy: The repair includes complete media recovery with no dataloss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_475549922.hm
contents of repair script:
# restore and recover datafile
sql 'alter database datafile 28 offline';
restore datafile 28;
recover datafile 28;
sql 'alter database datafile 28 online';
# block media recovery
recover datafile 1 block 56416;
4)执行REPAIR FAILURE。
以下修复还原和恢复一个数据文件和在一个损坏的块上执行块介质恢复。RMAN提示信息它将执行修复。用户输入的文本显示为粗体。
RMAN> REPAIR FAILURE;
Strategy: The repair includes complete media recovery with no dataloss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_475549922.hm
contents of repair script:
# restore and recover data file
sql 'alter database datafile 28 offline';
restore datafile 28;
recover datafile 28;
sql 'alter database datafile 28 online';
# block media recovery
recover datafile 1 block 56416;
Do you really want to execute the above repair (enter YES or NO)?YES
executing repair script
sql statement: alter database datafile 28 offline
Starting restore at 23-APR-13
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backupset
channel ORA_DISK_1: restoring datafile 00028 to /disk1/oradata/prod/
users01.dbf
channel ORA_DISK_1: reading from backup piece /disk2/PROD/backupset/
2013_04_18/o1_mf_nnndf_TAG20130418T182042_32fjzd3z_.bkp
channel ORA_DISK_1: piece handle=/disk2/PROD/backupset/2013_04_18/
o1_mf_nnndf_TAG20130418T182042_32fjzd3z_.bkp tag=TAG20130418T182042
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 23-APR-13
Starting recover at 23-APR-13
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 23-APR-13
sql statement: alter database datafile 28 online
Starting recover at 23-APR-13
using channel ORA_DISK_1
searching flashback logs for block images until SCN 429690
finished flashback log search, restored 1 blocks
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 23-APR-13
repair failure complete
5)可选地,执行LIST FAILURE进行确认。
6.更改故障状态和优先级
在某些情况中,你可能想使用CHANGE FAILURE命令来更改故障的状态或优先级。
例如,如果块的优先级具有HIGH优先级,如果块是在很少使用的表空间中,你可能想临时更改它为LOW。
如果通过一种REPAIR FAILURE命令以外的方式修复了故障,那么下次执行LIST FAILURE时数据恢复顾问内含地关闭它。因为这个原因,通常不需要执行CHANGE FAILURE … CLOSED命令。你只需要在自动的故障重新验证失败时但你觉得故障不再存在时使用这个命令。如果你使用CHANGE FAILURE来关闭一个仍然存在的故障,当合适的数据完整性检查执行时,数据恢复顾问使用不同的故障ID重新创建它。
一般情况下,通过故障号来指定要更改的故障。也可以通过指定ALL,CRITICAL,HIGH或LOW批量更改故障。可以更改故障为CLOSED或PRIORITY HIGH或PRIORITY LOW。
更改故障的状态或优先级:
1) 列出“列出所有故障”中描述的所有故障。
以下示例列出一个涉及损坏数据块的故障。
RMAN> LIST FAILURE;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-systemdatafilesare missing
101 HIGH OPEN 23-APR-13 Datafile 25: '/disk1/oradata/prod/example01.dbf' contains one or more corrupt blocks
2) 执行CHANGE FAILURE和期望的选项。
以下示例更改块损坏故障的优先级从HIGH到LOW。
RMAN> CHANGE FAILURE 101 PRIORITY LOW;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
101 HIGH OPEN 23-APR-13 Datafile 25: '/disk1/
oradata/prod/example01.dbf' contains one or more corrupt blocks
Do you really want to change the above failures (enter YES or NO)?YES
changed 1 failures to LOW priority
3) 可选地,执行LIST FAILURE ALL来查看更改。
如果执行LIST FAILURE而不带ALL,如果没有CRITICAL或HIGH优先级的故障存在,那么命令只列出LOW优先级的故障。
RMAN> LIST FAILURE ALL;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-systemdatafilesare missing
101 LOW OPEN 23-APR-13 Datafile 25: '/disk1/
oradata/prod/example01.dbf' contains one or more corrupt blocks
来源:《Oracle Database Backup and Recovery User’s Guide,19c》
以上是关于诊断和响应故障_使用数据恢复顾问(Data Recovery Advisor)诊断和修复故障的主要内容,如果未能解决你的问题,请参考以下文章