Oracle 11g New 使用数据恢复指导
• 描述用于修复数据故障的选项 • 使用新的RMAN 数据修复命令可执行以下操作: – 列出故障 – 接收修复建议 – 修复故障 • 执行预防性故障检查 • 查询数据恢复指导视图
修复数据故障 • Data Guard提供到备用数据库的故障转移功能,以使操作不受停机时间的影响。 • 数据恢复指导是Oracle Database 11g 的新增功能,它基于故障现象分析故障并确定修复策略: – 将多个故障聚集在一起以进行有效的修复 – 提供一个建议的修复选项 – 按照要求执行修复 • 闪回技术保护行的生命周期并帮助修复逻辑问题。
修复数据故障 “数据故障”是指缺失、损坏或不一致的数据、日志、控件或其它文件,Oracle 实例无法访问其内容。数据库出现问题时,分析基本原因并选择正确的解决方案通常占用了大部分的停机时间。Oracle Database 11 g 提供了几个新工具和增强的工具,用于分析和修复数据库问题。 • Data Guard允许您故障转移至备用数据库(有自己的数据副本),使您可以在主数据库发生数据故障时继续进行操作。这样,在故障转移至备用数据库后,便可以修复出现故障的数据库(旧的主数据库),而无需担心它会对应用程序造成影响。Data Guard 有许多改进。 • 数据恢复指导是一种内置的工具,可自动诊断数据故障并报告相应的修复选项。例如,如果数据恢复指导发现存在许多损坏的块,它会建议还原整个文件,而不是分别修复这些块。因此,它有助于您执行正确的故障修复。可以手动修复数据故障,也可以请求数据恢复指导为您执行修复,从而缩短故障恢复的时间。 可以使用闪回技术修复逻辑问题。 • 闪回归档可在指定的时间段内维护表数据的持续更改,从而使您可以访问归档数据。 • 闪回事务处理使您通过一次单击即可回退事务处理和所有冲突的事务处理。 已了解到以下信息: • RMAN自动执行数据文件介质恢复(避免逻辑故障和物理故障的一种常见恢复形式)和块介质恢复(恢复单个块而不是整个数据文件)。 • 自动存储管理( ASM) 可防止出现存储故障。
数据恢复指导 • 快速检测、分析和修复故障 • 将对用户的干扰降低到最小 • 修复停机时故障和运行时故障 • 提供的用户界面: – EM GUI 界面 – (多个路径) – RMAN 命令行 • 支持的数据库配置: – 单一实例 – 非RAC – 支持故障转移至备用数据库,但不支持分析和修复备用数据库数据恢复指导的功能 数据恢复指导在遇到错误时会自动收集数据故障信息。此外,它还能预先检查故障。在此 模式中,它可以在数据库进程发现损坏并发送错误消息之前检测和分析数据故障(请注 意,修复始终在人为控制之下进行)。 数据故障可能非常严重。例如,如果缺少最新的日志文件,则无法启动数据库。一些数据故障(如数据文件中的块损坏)不是灾难性故障,因为它们不会使数据库停机,也不会阻止您启动Oracle 实例。数据恢复指导可处理以下两种情况:一种情况是您无法启动数据库(因为缺少一些必需的数据库文件,或者这些数据库文件不一致或已损坏),另一种情况是运行时发现文件损坏。 解决严重数据故障的首选方法是首先将故障转移至备用数据库(前提是在Data Guard 配置下),这样用户就可以尽快恢复联机。然后,需要修复数据故障的主要原因,但幸运的是,此操作不会影响用户。
用户界面 可从Enterprise Manager (EM) Database Control 和Grid Control 中使用数据恢复指导。存在故障时,有几种方法可以访问数据恢复指导。下列示例都从“Database Instance(数据库实例)”主页开始: • “Availability (可用性)”选项卡页> Perform Recover (执行恢复)> Advise and Recover(建议和恢复) • “Active Incidents(活动意外事件)”链接> “Support Workbench(支持工作台)”的“Problems (问题)”页:“Checker Findings(检查器查找结果)”选项卡页> Launch Recovery Advisor(启动恢复指导) • Database Instance Health(数据库实例健康状况)> 单击特定的链接,例如,“Incidents(意外事件)”部分中的ORA 1578 >“Support Workbench(支持工作台)”的 “Problems Detail(问题详细资料)”页> Data Recovery Advisor(数据恢复指导) • Database Instance Health(数据库实例健康状况)> “Related Links(相关链接)”部分:Support Workbench(支持工作台)> “Checker Findings(检查器查找结果)”选项卡页:“Launch Recovery Advisor(启动恢复指导)” • 相关链接:Advisor Central(指导中心)> “Advisors(指导)”选项卡页:“Data Recovery Advisor(数据恢复指导)” • 相关链接:Advisor Central(指导中心)> “Checkers (检查器)”选项卡页:Details(详细资料)> “Run Detail(运行详细资料)”选项卡页:“Launch Recovery Advisor(启动恢复指导)” 也可以通过RMAN 命令行使用它。例如: rman target / nocatalog rman> list failure all;
支持的数据库配置 在当前版本中,数据恢复指导支持单一实例数据库,不支持Oracle Real Application Clusters (RAC) 数据库。 数据恢复指导无法使用从备用数据库转移出来的块或文件修复主数据库上的故障。同时,您也无法使用数据恢复指导诊断并修复备用数据库上的故障。然而,作为一个修复选项数据恢复指导确实支持将故障转移到备用数据库(如上所述)。
数据恢复指导
数据恢复指导 Oracle Database 11 g 中的自动诊断工作流可为您执行工作流步骤。使用数据恢复指导,您只需启动建议和修复。 1. 健康状况监视器会自动执行检查,并将故障及其故障现象作为“查找结果”记录到自动诊断资料档案库(ADR) 中。 2. 数据恢复指导将查找结果与故障合并在一起。它列出了先前执行的评估结果,其中包含故障严重程度(严重或高)。 3. 如果您要求系统提供有关故障的修复建议,数据恢复指导会将故障映射到自动和手动修复选项,检查基本可行性,并为您提供修复建议。 4. 可以选择手动执行修复或者请求数据恢复指导为您执行此操作。 5. 除了健康状况监视器和数据恢复指导自动执行的主要“被动”检查之外,Oracle 还建议使用VALIDATE 命令进行“预防性”检查。
评估数据故障 此图片显示了不同的访问路径,可以使用这些访问路径在健康状况监视器和数据恢复指导之间进行导航。它还显示了健康状况监视器和数据恢复指导的交互操作。
数据故障 数据故障 可通过检查来检测数据故障,检查是评估数据库或其组件健康状况的诊断过程。每个检查都可以诊断一个或多个故障,这些故障将映射到修复。 检查可以是被动检查,也可以是预防性检查。数据库中出现错误时,将自动执行“被动检查”。也可以进行“预防性检查”,例如,通过执行VALIDATE DATABASE命令。 在Enterprise Manager 中,如果发现数据库处于“停机”或“已装载”状态,请选择“Availability (可用性)> Perform Recovery(执行恢复)”,或单击“Perform Recovery(执行恢复)”按钮。
数据故障:示例 • 组件不可访问,例如: – 缺失操作系统级别的数据文件 – 访问权限不正确 – 表空间脱机等 • 物理损坏,如块校验和故障或块头字段值无效 • 逻辑损坏,如字典不一致、行片段损坏、索引条目损坏或事务处理损坏 • 不一致,如控制文件比数据文件和联机重做日志旧或新 • I/O 故障,如超过打开的文件数限制、通道不可访问、网络或I/O 错误
数据故障:示例 数据恢复指导可以分析故障并建议问题修复选项,如以上所述。
列出数据故障 列出数据故障 在“Perform Recovery(执行恢复)”页上,单击“Advise and Repair(建议和修复)”。 “View and Manage Failures (查看和管理故障)”页是数据恢复指导的主页。屏幕快照中的示例显示了数据恢复指导列出数据故障及详细资料的方式。您可以启动的活动包括建议、设置优先级和关闭故障。 基本RMAN LIST FAILURE命令也可以显示数据故障及详细资料。这里没有启动故障评估;以前在ADR 中执行并存储过它们。 故障按优先级的降序顺序列出:“CRITICAL (严重)”、“HIGH(高)”和“LOW(低)”。具有相同优先级的故障按时间戳的升序顺序列出。
修复建议 修复建议 在“View and Manage Failures (查看和管理故障)”页上,单击“Advise (建议)”按钮后,数据恢复指导将生成一个手动核对清单。可能显示两种类型的故障: • 需要人工干预的故障。如磁盘缆线未插入时出现的连接故障。 • 如果撤消前面的错误操作便会得以快速修复的故障。例如,如果错误地重命名了某个数据文件,将数据文件重命名回原来的名称比从备份启动RMAN 还原要快。 可以执行以下操作: • 执行手动修复后,单击“Re-assess Failures (重新评估故障)”。已解决的故障会隐式关闭;其它剩余故障将显示在“View and Manage Failures (查看和管理故障)”页中。 • 单击“Continue with Advise(继续执行建议)”以启动自动修复。数据恢复指导在生成自动修复选项时会生成一个脚本,用于显示RMAN 计划如何修复故障。要执行自动修复,请单击“Continue (继续)”。如果不希望数据恢复指导自动修复故障,可从该脚本开始执行手动修复。
执行修复 在上面的示例中,数据恢复指导执行了一次成功的修复。
数据恢复指导 RMAN 命令行界面 数据恢复指导:RMAN 命令行界面 如果您怀疑或已知道数据库出现故障,则可使用LIST FAILURE命令获得关于这些故障的信息。可以列出所有故障或部分故障并以多种方式限制输出。故障由故障号进行唯一标识。请注意,这些故障号不是连续的,因此它们之间的间隔没有任何意义。 ADVISE FAILURE 命令将显示为指定故障建议的修复选项。它可打印输入故障概要并隐式关闭已修复的所有打开的故障。没有使用任何选项时,默认行为是对记录在ADR 中优先级为CRITICAL 和HIGH 的所有故障提供建议。 在同一RMAN 会话中REPAIR FAILURE 命令在ADVISE FAILURE 命令后使用。默认情况下,该命令使用当前会话中上次执行ADVISE FAILURE 命令时建议的一个修复选项。如果没有任何修复选项,REPAIR FAILURE 命令将启动隐式ADVISE FAILURE 命令。修复完成后,该命令会关闭故障。 CHANGE FAILURE 命令将更改故障优先级或关闭一个或多个故障。仅可以更改HIGH 或LOW 故障优先级。修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。
列出数据故障 RMAN LIST FAILURE命令可列出先前执行的故障评估。 • 包括新诊断的故障 • 删除关闭的故障(默认情况下) 语法: LIST FAILURE [ ALL | CRITICAL | HIGH | LOW | CLOSED | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum[,failnum,…] ] [ DETAIL ]
列出数据故障 RMAN LIST FAILURE命令可列出故障。如果目标实例使用恢复目录,它可以处于STARTED模式下,否则必须处于MOUNTED模式下。LIST FAILURE命令不启动诊断新故障检查;它将列出先前执行的评估结果。重复执行LIST FAILURE命令将重新验证所有现有的故障。如果数据库诊断出新的故障(在命令执行之间),则会显示这些新故障。如果用户手动修复故障或临时故障消失,则数据恢复指导会将这些故障从LIST FAILURE输出中删除。 以下是语法说明: • failnum:为其显示修复选项的故障数。 • ALL :列出所有优先级的故障。 • CRITICAL :列出优先级为CRITICAL 且处于OPEN 状态的故障。这些故障使整个数据库不可用(如控制文件缺失),因此需要立即引起注意。 • HIGH:列出优先级为HIGH 且处于OPEN 状态的故障。这些故障使数据库部分不可用或不可恢复,因此应尽快修复(如归档重做日志缺失)。 • LOW :列出优先级为LOW 且处于OPEN 状态的故障。低优先级的故障可以等到修复了更重要的故障后再进行修复。 • CLOSED :仅列出关闭的故障。 • EXCLUDE FAILURE:从列表中排除指定的故障号。 • DETAIL :通过展开合并的故障列出故障。例如,如果一个文件中有多个块损坏,则DETAIL 选项将列出每个块损坏。
列出数据故障示例 [oracle1@stbbv06 orcl]$ rman Recovery Manager: Release 11.1.0.6.0 - Production on Thu Jun 21 13:33:52 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN> connect target sys/oracle@orcl connected to target database: ORCL (DBID=1153427045) RMAN> RMAN> LIST FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing RMAN> LIST FAILURE DETAIL; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable RMAN>
修复建议 RMAN ADVISE FAILURE 命令有以下用途: • 显示输入故障列表概要 • 包括警告(如果ADR 中出现新故障) • 显示手动核对清单 • 列出一个建议的修复选项 • 生成修复脚本(用于自动或手动修复) . . . Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979 128860.hm RMAN>
修复建议 RMAN ADVISE FAILURE 命令可显示指定故障的建议修复选项。如果从Enterprise Manager 中执行此命令,则Data Guard 将显示一个修复选项(但是,如果直接从RMAN 命令行执行此命令,则Data Guard 不会显示修复选项)。ADVISE FAILURE 命令可打印输入故障概要。该命令会隐式关闭已修复的所有打开的故障。 没有使用任何选项时,默认行为是对记录在自动诊断资料档案库(ADR) 中优先级为CRITICAL 和HIGH 的所有故障提供建议。如果自上次执行LIST FAILURE命令后ADR 中记录了新故障,则在对所有CRITICAL 和HIGH 故障提供建议前,该命令将包含一个WARNING。 执行两个常规修复选项:无数据丢失修复和数据丢失修复。 数据恢复指导在生成自动修复选项时会生成一个脚本,用于显示RMAN 计划如何修复故障。如果不希望数据恢复指导自动修复故障,可从该脚本开始执行手动修复。该脚本的操作系统(OS) 位置将显示在命令输出的末尾。可以检查此脚本,并对其进行自定义(如果需要),还可以手动执行该脚本(例如在审计线索要求建议执行手动操作时)。
修复建议(续) 语法 ADVISE FAILURE [ ALL | CRITICAL | HIGH | LOW | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum [,failnum,…] ]
命令行示例 RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=152 device type=DISK analyzing automatic repair options complete Mandatory Manual Actions ======================== no manual actions available Optional Manual Actions ======================= 1.If file /u01/app/oracle/oradata/orcl/users01.dbf was unintentionally renamed or moved, restore it 2.If file /u01/app/oracle/oradata/orcl/example01.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 4; Restore and recover datafile 5 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3909424189.hm RMAN>
执行修复 RMAN REPAIR FAILURE 命令有以下用途: • 遵循ADVISE FAILURE 命令 • 修复指定的故障 • 关闭已修复的故障 语法: REPAIR FAILURE [PREVIEW] [NOPROMPT]
示例: RMAN> repair failure;
执行修复 此命令应在同一RMAN 会话中的ADVISE FAILURE 命令后使用。默认情况下(没有选项),该命令使用当前会话中上次执行ADVISE FAILURE 时建议的一个修复选项。如果没有任何修复选项,REPAIR FAILURE 命令将启动隐式ADVISE FAILURE 命令。 默认情况下,您需要确认是否执行该命令,因为可能需要花费时间完成大量更改。在执行修复期间,该命令的输出将表明正在执行的修复阶段。修复完成后,该命令会关闭故障。 无法运行多个并发修复会话。但是,允许并发REPAIR … PREVIEW 会话。 • PREVIEW表示:不执行修复,而是显示先前生成的包含所有修复操作和注释的RMAN 脚本。 • NOPROMPT 表示:不要求确认。
修复故障示例 RMAN> REPAIR FAILURE PREVIEW; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; RMAN> REPAIR FAILURE; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; Do you really want to execute the above repair (enter YES or NO)? YES executing repair script Starting restore at 21-JUN-07 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_nnnd f_TAG20070621T043615_37m7gpfp_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_ mf_nnndf_TAG20070621T043615_37m7gpfp_.bkp tag=TAG20070621T043615 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 21-JUN-07 Starting recover at 21-JUN-07 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 20 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 0_37m7lhgx_.arc archived log for thread 1 with sequence 21 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 1_37m7llgp_.arc archived log for thread 1 with sequence 22 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 2_37m7logv_.arc archived log for thread 1 with sequence 23 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 3_37n046y3_.arc
channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=16 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=17 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=18 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=19 channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_an nnn_TAG20070621T043805_37m7l46t_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o 1_mf_annnn_TAG20070621T043805_37m7l46t_.bkp tag=TAG20070621T043805 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc thread=1 sequence=16 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc RECID=20 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc thread=1 sequence=17 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc RECID=22 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc thread=1 sequence=18 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc RECID=21 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc thread=1 sequence=19 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc RECID=23 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_20_37m7lhgx_.arc thread=1 sequence=20 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_21_37m7llgp_.arc thread=1 sequence=21 media recovery complete, elapsed time: 00:00:01 Finished recover at 21-JUN-07 repair failure complete Do you want to open the database (enter YES or NO)? YES database opened RMAN>
分类(和关闭)故障 RMAN CHANGE FAILURE 命令有以下用途: • 更改故障优先级(除CRITICAL 外) • 关闭一个或多个故障 示例: RMAN> change failure 5 priority low; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 5 HIGH OPEN 20-DEC-06 one or more datafiles are missing Do you really want to change the above failures (enter YES or NO)? yes changed 1 failures to LOW priority
分类(和关闭)故障 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 。) 修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。这需要重新评估其它所有打开的故障,因为其中的某些故障会因故障关闭而变得不相关。 默认情况下,该命令要求用户确认请求的更改。
数据恢复指导视图 查询动态数据字典视图: • V$IR_FAILURE:所有故障的列表,包括已关闭的故障(LIST FAILURE命令的结果) • V$IR_MANUAL_CHECKLIST :手动建议的列表(ADVISE FAILURE 命令的结果) • V$IR_REPAIR :修复列表(ADVISE FAILURE 命令的结果) • V$IR_FAILURE_SET :故障和建议标识符的交叉引用
数据恢复指导视图 用法示例:假设需要显示2007 年6 月21 日检测到的所有故障。 SELECT * FROM v$ir_failure WHERE trunc (time_detected) = '21-JUN-2007'; (根据页面调整输出格式) FAILURE_ID PARENT_ID CHILD_COUNT CLASS_NAME TIME_DETE MODIFIED DESCRIPTION IMPACTS PRIORITY STATUS 142 0 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 One or more non-system datafiles are missing See impact for individual child failures HIGH CLOSED 145 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Some objects in tablespace USERS might be unavailable HIGH CLOSED 151 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Some objects in tablespace EXAMPLE might be unavailable HIGH CLOSED
最佳实践:预防性检查 调用对数据库及其组件的预防性健康状况检查: • 健康状况监视器或RMAN VALIDATE DATABASE命令 • 检查逻辑和物理损坏 • 在ADR 中记录查找结果
最佳实践:预防性检查 对于非常重要的数据库,可能需要执行其它预防性检查(可以在每天的低峰时段执行)。 可通过健康状况监视器或使用RMAN VALIDATE 命令安排定期的健康状况检查。通常,如果被动检查在数据库组件中检测到故障,则可能需要对受影响的组件执行更全面的检查。 RMAN VALIDATE DATABASE命令用于调用对数据库及其组件的健康状况检查。它扩展了现有的VALIDATE BACKUPSET 命令。在验证期间检测到的所有问题都会显示出来,这些问题进而会启动故障评估。如果检测到故障,则该故障会作为查找结果记录到ADR 中。可以使用LIST FAILURE命令查看资料档案库中记录的所有故障。 VALIDATE 命令支持对单个备份集和数据块进行验证。在物理损坏中,数据库根本无法识别块。在逻辑损坏中,块的内容在逻辑上不一致。默认情况下,VALIDATE 命令只检查物理损坏。也可以指定CHECK LOGICAL 检查逻辑损坏。
块损坏可分为块间损坏和块内损坏。在块内损坏中,块本身发生损坏,可以是物理损坏也可以是逻辑损坏。在块间损坏中,块与块之间发生的损坏只能是逻辑损坏。VALIDATE 命令只检查块内损坏。 示例 RMAN> validate database; Starting validate at 21-DEC-06 using channel ORA_DISK_1 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: validation complete, elapsed time: 00:00:15 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 1 OK 0 13168 85760 981642 File Name: /u01/app/oracle/oradata/orcl/system01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 60619 Index 0 9558 Other 0 2415 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 2 OK 0 22892 66720 981662 File Name: /u01/app/oracle/oradata/orcl/sysaux01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 10529 Index 0 9465 Other 0 23834
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 3 OK 0 104 7680 981662 File Name: /u01/app/oracle/oradata/orcl/undotbs01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 0 Index 0 0 Other 0 7576 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 4 OK 0 24 640 963835 File Name: /u01/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 43 Index 0 63 Other 0 510 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 5 OK 0 1732 12800 745885 File Name: /u01/app/oracle/oradata/orcl/example01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 4416 Index 0 1303 Other 0 5349 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation including current control file for validation including current SPFILE in backup set channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 List of Control File and SPFILE =============================== File Type Status Blocks Failing Blocks Examined ------------ ------ -------------- --------------- SPFILE OK 0 2 Control File OK 0 594 Finished validate at 21-DEC-06 RMAN>
设置检测损坏的参数
设置检测损坏的参数 可以使用DB_ULTRA_SAFE 参数来简化管理。它会影响下列参数的默认值: • DB_BLOCK_CHECKING,用于启动对数据库块的检查。此检查通常可防止内存和数据损坏。(默认值:FALSE,建议值:FULL) • DB_BLOCK_CHECKSUM,将每个数据块写入到磁盘时,在其高速缓存标头中启动校验和的计算和存储。校验和有助于检测由基础磁盘、存储系统或I/O 系统引起的损坏。(默认值:TYPICAL,建议值:TYPICAL) • DB_LOST_WRITE_PROTECT ,用于启动对“丢失的写入”的检查。如果I/O 子系统指示块写入已完成,但该块尚未完全写入到持久存储中,则物理备用数据库上会发生数据块写入丢失。当然,写入操作在主数据库中已完成。(默认值:TYPICAL,建议值:TYPICAL) 如果显式设置了其中任何一个参数,则您设置的值将是有效的。DB_ULTRA_SAFE 参数(Oracle Database 11 g 中的新增参数)仅更改这些参数的默认值。
设置检测损坏的参数
设置检测损坏的参数(续) 根据系统对块损坏的容忍度,可以加强对块损坏的检查。由于会执行大量检查,所以启用DB_ULTRA_SAFE 参数(默认值:OFF )会导致系统开销增加。开销量与每秒更改的块数相关,所以无法进行简单量化。对于“高更新的”应用程序,CPU 使用率会显著增加,大约在10%到20%之间,不过可能更高。通过分配额外的CPU 可减轻此开销。 • 将DB_ULTRA_SAFE 参数设置为DATA_ONLY,然后将DB_BLOCK_CHECKING参数设置为MEDIUM 。这会检查块中的数据在逻辑上是否一致。内存中的块内容发生更改后(例如,在执行UPDATE 或INSERT 命令、磁盘上读取或在Oracle RAC 中实例间传送块后),将执行基本的块标头检查。此级别的检查包括对非索引表块进行的语义块检查。 • 将DB_ULTRA_SAFE 参数设置为DATA_AND_INDEX,然后将DB_BLOCK_CHECKING参数设置为FULL。除了上面的检查外,还会对索引块执行语义检查(即遇到损坏时,可实际删除和重新构造从属对象的块)。 • 将DB_ULTRA_SAFE 参数设置为DATA_ONLY 或DATA_AND_INDEX,然后将DB_BLOCK_CHECKSUM参数设置为FULL 并将DB_LOST_WRITE_PROTECT 参数设置为TYPICAL。
小结
• 描述用于修复数据故障的选项 • 使用新的RMAN 数据修复命令可执行以下操作: – 列出故障 – 接收修复建议 – 修复故障 • 执行预防性故障检查 • 查询数据恢复指导视图
修复数据故障 • Data Guard提供到备用数据库的故障转移功能,以使操作不受停机时间的影响。 • 数据恢复指导是Oracle Database 11g 的新增功能,它基于故障现象分析故障并确定修复策略: – 将多个故障聚集在一起以进行有效的修复 – 提供一个建议的修复选项 – 按照要求执行修复 • 闪回技术保护行的生命周期并帮助修复逻辑问题。
修复数据故障 “数据故障”是指缺失、损坏或不一致的数据、日志、控件或其它文件,Oracle 实例无法访问其内容。数据库出现问题时,分析基本原因并选择正确的解决方案通常占用了大部分的停机时间。Oracle Database 11 g 提供了几个新工具和增强的工具,用于分析和修复数据库问题。 • Data Guard允许您故障转移至备用数据库(有自己的数据副本),使您可以在主数据库发生数据故障时继续进行操作。这样,在故障转移至备用数据库后,便可以修复出现故障的数据库(旧的主数据库),而无需担心它会对应用程序造成影响。Data Guard 有许多改进。 • 数据恢复指导是一种内置的工具,可自动诊断数据故障并报告相应的修复选项。例如,如果数据恢复指导发现存在许多损坏的块,它会建议还原整个文件,而不是分别修复这些块。因此,它有助于您执行正确的故障修复。可以手动修复数据故障,也可以请求数据恢复指导为您执行修复,从而缩短故障恢复的时间。 可以使用闪回技术修复逻辑问题。 • 闪回归档可在指定的时间段内维护表数据的持续更改,从而使您可以访问归档数据。 • 闪回事务处理使您通过一次单击即可回退事务处理和所有冲突的事务处理。 已了解到以下信息: • RMAN自动执行数据文件介质恢复(避免逻辑故障和物理故障的一种常见恢复形式)和块介质恢复(恢复单个块而不是整个数据文件)。 • 自动存储管理( ASM) 可防止出现存储故障。
数据恢复指导 • 快速检测、分析和修复故障 • 将对用户的干扰降低到最小 • 修复停机时故障和运行时故障 • 提供的用户界面: – EM GUI 界面 – (多个路径) – RMAN 命令行 • 支持的数据库配置: – 单一实例 – 非RAC – 支持故障转移至备用数据库,但不支持分析和修复备用数据库数据恢复指导的功能 数据恢复指导在遇到错误时会自动收集数据故障信息。此外,它还能预先检查故障。在此 模式中,它可以在数据库进程发现损坏并发送错误消息之前检测和分析数据故障(请注 意,修复始终在人为控制之下进行)。 数据故障可能非常严重。例如,如果缺少最新的日志文件,则无法启动数据库。一些数据故障(如数据文件中的块损坏)不是灾难性故障,因为它们不会使数据库停机,也不会阻止您启动Oracle 实例。数据恢复指导可处理以下两种情况:一种情况是您无法启动数据库(因为缺少一些必需的数据库文件,或者这些数据库文件不一致或已损坏),另一种情况是运行时发现文件损坏。 解决严重数据故障的首选方法是首先将故障转移至备用数据库(前提是在Data Guard 配置下),这样用户就可以尽快恢复联机。然后,需要修复数据故障的主要原因,但幸运的是,此操作不会影响用户。
用户界面 可从Enterprise Manager (EM) Database Control 和Grid Control 中使用数据恢复指导。存在故障时,有几种方法可以访问数据恢复指导。下列示例都从“Database Instance(数据库实例)”主页开始: • “Availability (可用性)”选项卡页> Perform Recover (执行恢复)> Advise and Recover(建议和恢复) • “Active Incidents(活动意外事件)”链接> “Support Workbench(支持工作台)”的“Problems (问题)”页:“Checker Findings(检查器查找结果)”选项卡页> Launch Recovery Advisor(启动恢复指导) • Database Instance Health(数据库实例健康状况)> 单击特定的链接,例如,“Incidents(意外事件)”部分中的ORA 1578 >“Support Workbench(支持工作台)”的 “Problems Detail(问题详细资料)”页> Data Recovery Advisor(数据恢复指导) • Database Instance Health(数据库实例健康状况)> “Related Links(相关链接)”部分:Support Workbench(支持工作台)> “Checker Findings(检查器查找结果)”选项卡页:“Launch Recovery Advisor(启动恢复指导)” • 相关链接:Advisor Central(指导中心)> “Advisors(指导)”选项卡页:“Data Recovery Advisor(数据恢复指导)” • 相关链接:Advisor Central(指导中心)> “Checkers (检查器)”选项卡页:Details(详细资料)> “Run Detail(运行详细资料)”选项卡页:“Launch Recovery Advisor(启动恢复指导)” 也可以通过RMAN 命令行使用它。例如: rman target / nocatalog rman> list failure all;
支持的数据库配置 在当前版本中,数据恢复指导支持单一实例数据库,不支持Oracle Real Application Clusters (RAC) 数据库。 数据恢复指导无法使用从备用数据库转移出来的块或文件修复主数据库上的故障。同时,您也无法使用数据恢复指导诊断并修复备用数据库上的故障。然而,作为一个修复选项数据恢复指导确实支持将故障转移到备用数据库(如上所述)。
数据恢复指导
通过理清混乱缩短停机时间:
数据恢复指导 Oracle Database 11 g 中的自动诊断工作流可为您执行工作流步骤。使用数据恢复指导,您只需启动建议和修复。 1. 健康状况监视器会自动执行检查,并将故障及其故障现象作为“查找结果”记录到自动诊断资料档案库(ADR) 中。 2. 数据恢复指导将查找结果与故障合并在一起。它列出了先前执行的评估结果,其中包含故障严重程度(严重或高)。 3. 如果您要求系统提供有关故障的修复建议,数据恢复指导会将故障映射到自动和手动修复选项,检查基本可行性,并为您提供修复建议。 4. 可以选择手动执行修复或者请求数据恢复指导为您执行此操作。 5. 除了健康状况监视器和数据恢复指导自动执行的主要“被动”检查之外,Oracle 还建议使用VALIDATE 命令进行“预防性”检查。
评估数据故障 此图片显示了不同的访问路径,可以使用这些访问路径在健康状况监视器和数据恢复指导之间进行导航。它还显示了健康状况监视器和数据恢复指导的交互操作。
数据故障 数据故障 可通过检查来检测数据故障,检查是评估数据库或其组件健康状况的诊断过程。每个检查都可以诊断一个或多个故障,这些故障将映射到修复。 检查可以是被动检查,也可以是预防性检查。数据库中出现错误时,将自动执行“被动检查”。也可以进行“预防性检查”,例如,通过执行VALIDATE DATABASE命令。 在Enterprise Manager 中,如果发现数据库处于“停机”或“已装载”状态,请选择“Availability (可用性)> Perform Recovery(执行恢复)”,或单击“Perform Recovery(执行恢复)”按钮。
数据故障:示例 • 组件不可访问,例如: – 缺失操作系统级别的数据文件 – 访问权限不正确 – 表空间脱机等 • 物理损坏,如块校验和故障或块头字段值无效 • 逻辑损坏,如字典不一致、行片段损坏、索引条目损坏或事务处理损坏 • 不一致,如控制文件比数据文件和联机重做日志旧或新 • I/O 故障,如超过打开的文件数限制、通道不可访问、网络或I/O 错误
数据故障:示例 数据恢复指导可以分析故障并建议问题修复选项,如以上所述。
列出数据故障 列出数据故障 在“Perform Recovery(执行恢复)”页上,单击“Advise and Repair(建议和修复)”。 “View and Manage Failures (查看和管理故障)”页是数据恢复指导的主页。屏幕快照中的示例显示了数据恢复指导列出数据故障及详细资料的方式。您可以启动的活动包括建议、设置优先级和关闭故障。 基本RMAN LIST FAILURE命令也可以显示数据故障及详细资料。这里没有启动故障评估;以前在ADR 中执行并存储过它们。 故障按优先级的降序顺序列出:“CRITICAL (严重)”、“HIGH(高)”和“LOW(低)”。具有相同优先级的故障按时间戳的升序顺序列出。
修复建议 修复建议 在“View and Manage Failures (查看和管理故障)”页上,单击“Advise (建议)”按钮后,数据恢复指导将生成一个手动核对清单。可能显示两种类型的故障: • 需要人工干预的故障。如磁盘缆线未插入时出现的连接故障。 • 如果撤消前面的错误操作便会得以快速修复的故障。例如,如果错误地重命名了某个数据文件,将数据文件重命名回原来的名称比从备份启动RMAN 还原要快。 可以执行以下操作: • 执行手动修复后,单击“Re-assess Failures (重新评估故障)”。已解决的故障会隐式关闭;其它剩余故障将显示在“View and Manage Failures (查看和管理故障)”页中。 • 单击“Continue with Advise(继续执行建议)”以启动自动修复。数据恢复指导在生成自动修复选项时会生成一个脚本,用于显示RMAN 计划如何修复故障。要执行自动修复,请单击“Continue (继续)”。如果不希望数据恢复指导自动修复故障,可从该脚本开始执行手动修复。
执行修复 在上面的示例中,数据恢复指导执行了一次成功的修复。
数据恢复指导 RMAN 命令行界面 数据恢复指导:RMAN 命令行界面 如果您怀疑或已知道数据库出现故障,则可使用LIST FAILURE命令获得关于这些故障的信息。可以列出所有故障或部分故障并以多种方式限制输出。故障由故障号进行唯一标识。请注意,这些故障号不是连续的,因此它们之间的间隔没有任何意义。 ADVISE FAILURE 命令将显示为指定故障建议的修复选项。它可打印输入故障概要并隐式关闭已修复的所有打开的故障。没有使用任何选项时,默认行为是对记录在ADR 中优先级为CRITICAL 和HIGH 的所有故障提供建议。 在同一RMAN 会话中REPAIR FAILURE 命令在ADVISE FAILURE 命令后使用。默认情况下,该命令使用当前会话中上次执行ADVISE FAILURE 命令时建议的一个修复选项。如果没有任何修复选项,REPAIR FAILURE 命令将启动隐式ADVISE FAILURE 命令。修复完成后,该命令会关闭故障。 CHANGE FAILURE 命令将更改故障优先级或关闭一个或多个故障。仅可以更改HIGH 或LOW 故障优先级。修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。
列出数据故障 RMAN LIST FAILURE命令可列出先前执行的故障评估。 • 包括新诊断的故障 • 删除关闭的故障(默认情况下) 语法: LIST FAILURE [ ALL | CRITICAL | HIGH | LOW | CLOSED | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum[,failnum,…] ] [ DETAIL ]
列出数据故障 RMAN LIST FAILURE命令可列出故障。如果目标实例使用恢复目录,它可以处于STARTED模式下,否则必须处于MOUNTED模式下。LIST FAILURE命令不启动诊断新故障检查;它将列出先前执行的评估结果。重复执行LIST FAILURE命令将重新验证所有现有的故障。如果数据库诊断出新的故障(在命令执行之间),则会显示这些新故障。如果用户手动修复故障或临时故障消失,则数据恢复指导会将这些故障从LIST FAILURE输出中删除。 以下是语法说明: • failnum:为其显示修复选项的故障数。 • ALL :列出所有优先级的故障。 • CRITICAL :列出优先级为CRITICAL 且处于OPEN 状态的故障。这些故障使整个数据库不可用(如控制文件缺失),因此需要立即引起注意。 • HIGH:列出优先级为HIGH 且处于OPEN 状态的故障。这些故障使数据库部分不可用或不可恢复,因此应尽快修复(如归档重做日志缺失)。 • LOW :列出优先级为LOW 且处于OPEN 状态的故障。低优先级的故障可以等到修复了更重要的故障后再进行修复。 • CLOSED :仅列出关闭的故障。 • EXCLUDE FAILURE:从列表中排除指定的故障号。 • DETAIL :通过展开合并的故障列出故障。例如,如果一个文件中有多个块损坏,则DETAIL 选项将列出每个块损坏。
列出数据故障示例 [oracle1@stbbv06 orcl]$ rman Recovery Manager: Release 11.1.0.6.0 - Production on Thu Jun 21 13:33:52 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN> connect target sys/oracle@orcl connected to target database: ORCL (DBID=1153427045) RMAN> RMAN> LIST FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing RMAN> LIST FAILURE DETAIL; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable RMAN>
修复建议 RMAN ADVISE FAILURE 命令有以下用途: • 显示输入故障列表概要 • 包括警告(如果ADR 中出现新故障) • 显示手动核对清单 • 列出一个建议的修复选项 • 生成修复脚本(用于自动或手动修复) . . . Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979 128860.hm RMAN>
修复建议 RMAN ADVISE FAILURE 命令可显示指定故障的建议修复选项。如果从Enterprise Manager 中执行此命令,则Data Guard 将显示一个修复选项(但是,如果直接从RMAN 命令行执行此命令,则Data Guard 不会显示修复选项)。ADVISE FAILURE 命令可打印输入故障概要。该命令会隐式关闭已修复的所有打开的故障。 没有使用任何选项时,默认行为是对记录在自动诊断资料档案库(ADR) 中优先级为CRITICAL 和HIGH 的所有故障提供建议。如果自上次执行LIST FAILURE命令后ADR 中记录了新故障,则在对所有CRITICAL 和HIGH 故障提供建议前,该命令将包含一个WARNING。 执行两个常规修复选项:无数据丢失修复和数据丢失修复。 数据恢复指导在生成自动修复选项时会生成一个脚本,用于显示RMAN 计划如何修复故障。如果不希望数据恢复指导自动修复故障,可从该脚本开始执行手动修复。该脚本的操作系统(OS) 位置将显示在命令输出的末尾。可以检查此脚本,并对其进行自定义(如果需要),还可以手动执行该脚本(例如在审计线索要求建议执行手动操作时)。
修复建议(续) 语法 ADVISE FAILURE [ ALL | CRITICAL | HIGH | LOW | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum [,failnum,…] ]
命令行示例 RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- -------306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=152 device type=DISK analyzing automatic repair options complete Mandatory Manual Actions ======================== no manual actions available Optional Manual Actions ======================= 1.If file /u01/app/oracle/oradata/orcl/users01.dbf was unintentionally renamed or moved, restore it 2.If file /u01/app/oracle/oradata/orcl/example01.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 4; Restore and recover datafile 5 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3909424189.hm RMAN>
执行修复 RMAN REPAIR FAILURE 命令有以下用途: • 遵循ADVISE FAILURE 命令 • 修复指定的故障 • 关闭已修复的故障 语法: REPAIR FAILURE [PREVIEW] [NOPROMPT]
示例: RMAN> repair failure;
执行修复 此命令应在同一RMAN 会话中的ADVISE FAILURE 命令后使用。默认情况下(没有选项),该命令使用当前会话中上次执行ADVISE FAILURE 时建议的一个修复选项。如果没有任何修复选项,REPAIR FAILURE 命令将启动隐式ADVISE FAILURE 命令。 默认情况下,您需要确认是否执行该命令,因为可能需要花费时间完成大量更改。在执行修复期间,该命令的输出将表明正在执行的修复阶段。修复完成后,该命令会关闭故障。 无法运行多个并发修复会话。但是,允许并发REPAIR … PREVIEW 会话。 • PREVIEW表示:不执行修复,而是显示先前生成的包含所有修复操作和注释的RMAN 脚本。 • NOPROMPT 表示:不要求确认。
修复故障示例 RMAN> REPAIR FAILURE PREVIEW; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; RMAN> REPAIR FAILURE; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; Do you really want to execute the above repair (enter YES or NO)? YES executing repair script Starting restore at 21-JUN-07 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_nnnd f_TAG20070621T043615_37m7gpfp_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_ mf_nnndf_TAG20070621T043615_37m7gpfp_.bkp tag=TAG20070621T043615 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 21-JUN-07 Starting recover at 21-JUN-07 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 20 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 0_37m7lhgx_.arc archived log for thread 1 with sequence 21 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 1_37m7llgp_.arc archived log for thread 1 with sequence 22 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 2_37m7logv_.arc archived log for thread 1 with sequence 23 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 3_37n046y3_.arc
channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=16 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=17 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=18 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=19 channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_an nnn_TAG20070621T043805_37m7l46t_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o 1_mf_annnn_TAG20070621T043805_37m7l46t_.bkp tag=TAG20070621T043805 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc thread=1 sequence=16 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc RECID=20 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc thread=1 sequence=17 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc RECID=22 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc thread=1 sequence=18 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc RECID=21 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc thread=1 sequence=19 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc RECID=23 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_20_37m7lhgx_.arc thread=1 sequence=20 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_21_37m7llgp_.arc thread=1 sequence=21 media recovery complete, elapsed time: 00:00:01 Finished recover at 21-JUN-07 repair failure complete Do you want to open the database (enter YES or NO)? YES database opened RMAN>
分类(和关闭)故障 RMAN CHANGE FAILURE 命令有以下用途: • 更改故障优先级(除CRITICAL 外) • 关闭一个或多个故障 示例: RMAN> change failure 5 priority low; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 5 HIGH OPEN 20-DEC-06 one or more datafiles are missing Do you really want to change the above failures (enter YES or NO)? yes changed 1 failures to LOW priority
分类(和关闭)故障 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 。) 修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。这需要重新评估其它所有打开的故障,因为其中的某些故障会因故障关闭而变得不相关。 默认情况下,该命令要求用户确认请求的更改。
数据恢复指导视图 查询动态数据字典视图: • V$IR_FAILURE:所有故障的列表,包括已关闭的故障(LIST FAILURE命令的结果) • V$IR_MANUAL_CHECKLIST :手动建议的列表(ADVISE FAILURE 命令的结果) • V$IR_REPAIR :修复列表(ADVISE FAILURE 命令的结果) • V$IR_FAILURE_SET :故障和建议标识符的交叉引用
数据恢复指导视图 用法示例:假设需要显示2007 年6 月21 日检测到的所有故障。 SELECT * FROM v$ir_failure WHERE trunc (time_detected) = '21-JUN-2007'; (根据页面调整输出格式) FAILURE_ID PARENT_ID CHILD_COUNT CLASS_NAME TIME_DETE MODIFIED DESCRIPTION IMPACTS PRIORITY STATUS 142 0 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 One or more non-system datafiles are missing See impact for individual child failures HIGH CLOSED 145 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Some objects in tablespace USERS might be unavailable HIGH CLOSED 151 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Some objects in tablespace EXAMPLE might be unavailable HIGH CLOSED
最佳实践:预防性检查 调用对数据库及其组件的预防性健康状况检查: • 健康状况监视器或RMAN VALIDATE DATABASE命令 • 检查逻辑和物理损坏 • 在ADR 中记录查找结果
最佳实践:预防性检查 对于非常重要的数据库,可能需要执行其它预防性检查(可以在每天的低峰时段执行)。 可通过健康状况监视器或使用RMAN VALIDATE 命令安排定期的健康状况检查。通常,如果被动检查在数据库组件中检测到故障,则可能需要对受影响的组件执行更全面的检查。 RMAN VALIDATE DATABASE命令用于调用对数据库及其组件的健康状况检查。它扩展了现有的VALIDATE BACKUPSET 命令。在验证期间检测到的所有问题都会显示出来,这些问题进而会启动故障评估。如果检测到故障,则该故障会作为查找结果记录到ADR 中。可以使用LIST FAILURE命令查看资料档案库中记录的所有故障。 VALIDATE 命令支持对单个备份集和数据块进行验证。在物理损坏中,数据库根本无法识别块。在逻辑损坏中,块的内容在逻辑上不一致。默认情况下,VALIDATE 命令只检查物理损坏。也可以指定CHECK LOGICAL 检查逻辑损坏。
块损坏可分为块间损坏和块内损坏。在块内损坏中,块本身发生损坏,可以是物理损坏也可以是逻辑损坏。在块间损坏中,块与块之间发生的损坏只能是逻辑损坏。VALIDATE 命令只检查块内损坏。 示例 RMAN> validate database; Starting validate at 21-DEC-06 using channel ORA_DISK_1 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: validation complete, elapsed time: 00:00:15 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 1 OK 0 13168 85760 981642 File Name: /u01/app/oracle/oradata/orcl/system01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 60619 Index 0 9558 Other 0 2415 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 2 OK 0 22892 66720 981662 File Name: /u01/app/oracle/oradata/orcl/sysaux01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 10529 Index 0 9465 Other 0 23834
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 3 OK 0 104 7680 981662 File Name: /u01/app/oracle/oradata/orcl/undotbs01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 0 Index 0 0 Other 0 7576 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 4 OK 0 24 640 963835 File Name: /u01/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 43 Index 0 63 Other 0 510 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 5 OK 0 1732 12800 745885 File Name: /u01/app/oracle/oradata/orcl/example01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 4416 Index 0 1303 Other 0 5349 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation including current control file for validation including current SPFILE in backup set channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 List of Control File and SPFILE =============================== File Type Status Blocks Failing Blocks Examined ------------ ------ -------------- --------------- SPFILE OK 0 2 Control File OK 0 594 Finished validate at 21-DEC-06 RMAN>
设置检测损坏的参数
设置检测损坏的参数 可以使用DB_ULTRA_SAFE 参数来简化管理。它会影响下列参数的默认值: • DB_BLOCK_CHECKING,用于启动对数据库块的检查。此检查通常可防止内存和数据损坏。(默认值:FALSE,建议值:FULL) • DB_BLOCK_CHECKSUM,将每个数据块写入到磁盘时,在其高速缓存标头中启动校验和的计算和存储。校验和有助于检测由基础磁盘、存储系统或I/O 系统引起的损坏。(默认值:TYPICAL,建议值:TYPICAL) • DB_LOST_WRITE_PROTECT ,用于启动对“丢失的写入”的检查。如果I/O 子系统指示块写入已完成,但该块尚未完全写入到持久存储中,则物理备用数据库上会发生数据块写入丢失。当然,写入操作在主数据库中已完成。(默认值:TYPICAL,建议值:TYPICAL) 如果显式设置了其中任何一个参数,则您设置的值将是有效的。DB_ULTRA_SAFE 参数(Oracle Database 11 g 中的新增参数)仅更改这些参数的默认值。
设置检测损坏的参数
设置检测损坏的参数(续) 根据系统对块损坏的容忍度,可以加强对块损坏的检查。由于会执行大量检查,所以启用DB_ULTRA_SAFE 参数(默认值:OFF )会导致系统开销增加。开销量与每秒更改的块数相关,所以无法进行简单量化。对于“高更新的”应用程序,CPU 使用率会显著增加,大约在10%到20%之间,不过可能更高。通过分配额外的CPU 可减轻此开销。 • 将DB_ULTRA_SAFE 参数设置为DATA_ONLY,然后将DB_BLOCK_CHECKING参数设置为MEDIUM 。这会检查块中的数据在逻辑上是否一致。内存中的块内容发生更改后(例如,在执行UPDATE 或INSERT 命令、磁盘上读取或在Oracle RAC 中实例间传送块后),将执行基本的块标头检查。此级别的检查包括对非索引表块进行的语义块检查。 • 将DB_ULTRA_SAFE 参数设置为DATA_AND_INDEX,然后将DB_BLOCK_CHECKING参数设置为FULL。除了上面的检查外,还会对索引块执行语义检查(即遇到损坏时,可实际删除和重新构造从属对象的块)。 • 将DB_ULTRA_SAFE 参数设置为DATA_ONLY 或DATA_AND_INDEX,然后将DB_BLOCK_CHECKSUM参数设置为FULL 并将DB_LOST_WRITE_PROTECT 参数设置为TYPICAL。
小结
• 描述用于修复数据故障的选项 • 使用新的RMAN 数据修复命令可执行以下操作: – 列出故障 – 接收修复建议 – 修复故障 • 执行预防性故障检查 • 查询数据恢复指导视图
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御