诊断和修复数据库问题的最简单的方法是使用数据恢复指导。
这个工具提供了诊断持久化数据失败、显示修复建议、自动执行修复的功能。
failure,是Health Monitor发现的一种持久的数据损坏。
包括物理的和逻辑的数据块的损坏和数据文件的丢失。每个失败都有一个失败优先级和失败状态。
优先级可以为:CRITICAL、HIGH、LOW
状态可以为:OPEN、CLOSED
可以执行LIST FAILURE命令,显示所有的失败;
如果有失败存在,则可在相同的会话中运行ADVISE FAILURE来确定手工或自动的修复选项。
练习:显示失败并指导失败(同时开多个SecureCRT会话窗口进行操作)
|
# 1. 手工将users01.dbf数据文件改名(此时数据库处于OPEN状态) oracle@Redhat55.cuug.net:/u01/app/oracle/oradata/TestDB12> mv users01.dbf users01_bak.dbf # 2. 连接到scott用户,执行数据查询(因为该方案中的emp表存储在users表空间中) sys@TESTDB12>conn scott/scott Connected. scott@TESTDB12>select * from emp; select * from emp * ERROR at line 1: ORA-01116: error in opening database file 4 ORA-01110: data file 4: '/u01/app/oracle/oradata/TestDB12/users01.dbf' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3
# 3. 在RMAN中查看错误 RMAN> list failure;
using target database control file instead of recovery catalog List of Database Failures =========================
Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 82 HIGH OPEN 12-JUL-13 One or more non-system datafiles are missing
# 4. 对失败进行指导 RMAN> advise failure;
List of Database Failures =========================
Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 82 HIGH OPEN 12-JUL-13 One or more non-system datafiles are missing
analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=37 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/TestDB12/users01.dbf was unintentionally renamed or moved, restore it
Automated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 4 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/testdb12/TestDB12/hm/reco_2214128973.hm
# 5. 最后是生成的一个修复脚本,如果你不想使用数据修复指导来自动地修复失败,可以使用这个脚本作为你自己恢复策略的基础 # 5.1 查看生成的脚本中的内容 oracle@Redhat55.cuug.net:/home/oracle> more /u01/app/oracle/diag/rdbms/testdb12/TestDB12/hm/reco_2214128973.hm # restore and recover datafile sql 'alter database datafile 4 offline'; restore datafile 4; recover datafile 4; sql 'alter database datafile 4 online'; |
ADVISE FAILURE的输出会显示手工和自动的修复选项。
首先手动地修复这些问题,如果不能修复这些问题,再查看自动修复部分。
自动的修复选项描述了对一个或多个失败的服务器管理的修复。修复是被合并后的,所以一个修复可以修补多个失败。
修复选项会说明哪个修复被执行,执行这个修复是否会丢失数据。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1081012/ ,如需转载,请注明出处,否则将追究法律责任。