Change Failure - 使你可以改变故障的状态。 下面通过两个例子来说明DRA工具的用法 在测试之前使用RMAN对数据库进行全备 场景一、模拟控制文件丢失 关闭数据库,mv掉controlfile [ora_tst@test rman]$ mv /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf /u01
Change Failure - 使你可以改变故障的状态。下面通过两个例子来说明DRA工具的用法
在测试之前使用RMAN对数据库进行全备
关闭数据库,mv掉controlfile
[ora_tst@test rman]$ mv /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf.bak
启动数据库,报错
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2166536 bytes
Variable Size 427819256 bytes
Database Buffers 624951296 bytes
Redo Buffers 14000128 bytes
ORA-00205: error in identifying control file, check alert log for more info
告警日志中错误提示:
ALTER DATABASE MOUNT
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/TEST/db/apps_st/data/cntrl01.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
很容易可以发现是由于cntrl01.dbf丢失导致数据库无法mount
下面通过DRA来检测故障,并修复
[ora_tst@test ~]$ rman target /
Recovery Manager: Release 11.1.0.7.0 - Production on Mon Apr 21 13:35:09 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: TEST (not mounted)
RMAN> list failure;
using target database control file instead of recovery catalog
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
782 CRITICAL OPEN 21-APR-14 Control file /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf is missing
通过list failure命令可以发现故障所在,使用list failure ### detail; ( where ### equlas the failure number)可以查看故障的详细信息。
RMAN> list failure 782 detail;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
782 CRITICAL OPEN 21-APR-14 Control file /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf is missing
Impact: Database cannot be mounted
下面可以通过advise failure;命令让Oracle告诉我们遇到这个故障,应该怎么做
RMAN> advise failure;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
782 CRITICAL OPEN 21-APR-14 Control file /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf is missing
Impact: Database cannot be mounted
analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=383 device type=DISK
RMAN-06495: must explicitly specify DBID with SET DBID command
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 Use a multiplexed copy to restore control file /u01/oracle/TEST/db/apps_st/data/cntrl01.dbf
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_2401635629.hm
advise failure命令提示,我们可以通过拷贝冗余的controlfile来恢复出cntrl01.dbf,并且Oracle在/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_2401635629.hm中给出具体的恢复脚本
恢复脚本,我们还可以通过repair failure preview命令来获得
RMAN> repair failure preview;
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_2401635629.hm
contents of repair script:
# restore control file using multiplexed copy
restore controlfile from '/u01/oracle/TEST/db/apps_st/data/cntrl02.dbf';
sql 'alter database mount';
Oracle提示我们运行
restore controlfile from '/u01/oracle/TEST/db/apps_st/data/cntrl02.dbf';
sql 'alter database mount';
命令来恢复cntrl01.dbf
执行上述命令
RMAN> restore controlfile from '/u01/oracle/TEST/db/apps_st/data/cntrl02.dbf';
Starting restore at 21-APR-14
using channel ORA_DISK_1
channel ORA_DISK_1: copied control file copy
output file name=/u01/oracle/TEST/db/apps_st/data/cntrl01.dbf
output file name=/u01/oracle/TEST/db/apps_st/data/cntrl02.dbf
output file name=/u01/oracle/TEST/db/apps_st/data/cntrl03.dbf
Finished restore at 21-APR-14
RMAN> sql 'alter database mount';
sql statement: alter database mount
released channel: ORA_DISK_1
这里我是手工执行的脚本,也可以通过
RMAN> repair failure;
来自动修复故障。
数据库起到了mount状态,说明故障修复成功。
RMAN> sql 'alter database open';
sql statement: alter database open
关闭数据库
[ora_tst@test trace]$ mv /u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf /u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf.bak
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2166536 bytes
Variable Size 427819256 bytes
Database Buffers 624951296 bytes
Redo Buffers 14000128 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 401 - see DBWR trace file
ORA-01110: data file 401: '/u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf'
启动数据库时报错,查看告警日志,如下:
ALTER DATABASE OPEN
Errors in file /u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/trace/TEST_dbw0_27581.trc:
ORA-01157: cannot identify/lock data file 401 - see DBWR trace file
ORA-01110: data file 401: '/u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
下面通过DRA来查看故障,并解决
RMAN> list failure;
using target database control file instead of recovery catalog
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
825 HIGH OPEN 21-APR-14 One or more non-system datafiles are missing
RMAN> list failure 825 detail;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
825 HIGH OPEN 21-APR-14 One or more non-system datafiles are missing
Impact: See impact for individual child failures
List of child failures for parent failure ID 825
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
828 HIGH OPEN 21-APR-14 Datafile 401: '/u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf' is missing
Impact: Some objects in tablespace APPS_TS_TX_DATA might be unavailable
通过命令很明显的可以发现故障所在。
RMAN> advise failure;
List of Database Failures
=========================
故障 ID 优先级状态 检测时间摘要
---------- -------- --------- ------------- ----------
825 高 OPEN 21-APR-14 一个或多个非系统数据文件丢失
影响:查看单个子项失败的影响
父故障 ID 825
的子故障列表
故障 ID 优先级状态 检测时间摘要
---------- -------- --------- ------------- ----------
828 高 打开 21-APR-14 数据文件 401:缺少“/u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf”
影响:表空间 APPS_TS_TX_DATA 中的某些对象可能不可用
分析自动修复选项;这可能需要一些时间
分配的通道:ORA_DISK_1
通道 ORA_DISK_1: SID=382 设备类型=DISK
自动修复选项分析完成
强制手动操作
========================
没有可用的手动操作
可选手动操作
=======================
1. 如果文件 /u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf 被无意重命名或移动,请将其恢复
2. 如果备用数据库可用,则考虑 Data Guard 切换或故障转移
自动修复选项
========================
选项修复说明
------ ------------------
1 恢复和恢复数据文件 401
策略:修复包括完全介质恢复,不会丢失数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_556356707.hm
Oracle告诉我们/u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf文件已重命名或者移动需要恢复,恢复并恢复数据文件401。
RMAN>修复失败预览;
策略:修复包括完全介质恢复,不丢失数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_556356707.hm
修复脚本内容:
# 恢复和恢复数据文件
恢复数据文件 401;
恢复数据文件 401;
可通过
恢复数据文件 401;
恢复数据文件 401;
来恢复数据文件401。本次测试通过修复失败;命令来自动修改故障
RMAN>修复失败;
策略:修复包括完整的介质恢复,不会丢失数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_556356707.hm
修复脚本内容:
# 恢复和恢复数据文件
恢复数据文件 401;
恢复数据文件 401;
您确实要执行上述修复(输入 YES 或 NO)吗?是的
“是”是无效回复 - 请重新输入。
您确实要执行上述修复(输入 YES 或 NO)吗?是的
执行修复脚本
2014 年 4 月 21 日开始恢复
使用通道 ORA_DISK_1
通道 ORA_DISK_1:开始数据文件备份集恢复
通道 ORA_DISK_1:指定要从备份集恢复的数据文件
通道 ORA_DISK_1:将数据文件 00401 恢复到 /u01/oracle/TEST/db/apps_st/data/a_txn_data02.dbf
通道 ORA_DISK_1:从备份片 /u01/oracle/TEST/db/tech_st/11.1.0/dbs/0ep69g7a_1_1
读取
通道 ORA_DISK_1:片段句柄=/u01/oracle/TEST/db/tech_st/11.1.0/dbs/0ep69g7a_1_1 标签=TAG20140421T110305
通道 ORA_DISK_1:恢复备份片 1
通道 ORA_DISK_1:恢复完成,已用时间:00:05:35
于 2014 年 4 月 21 日完成恢复
2014 年 4 月 21 日开始恢复
使用通道 ORA_DISK_1
开始媒体恢复
线程 1 的序列号为 22 的归档日志已作为文件 /u01/PROD/db/apps_st/data/archive/ARC1_22_825013351.arc
存储在磁盘上
通道 ORA_DISK_1:开始将存档日志恢复到默认目标
通道 ORA_DISK_1:恢复存档日志
归档日志线程=1 序列=21
通道 ORA_DISK_1:从备份片 /u01/oracle/TEST/db/tech_st/11.1.0/dbs/0fp69laa_1_1
读取
通道 ORA_DISK_1:片段句柄=/u01/oracle/TEST/db/tech_st/11.1.0/dbs/0fp69laa_1_1 标签=TAG20140421T123001
通道 ORA_DISK_1:恢复备份片 1
通道 ORA_DISK_1:恢复完成,已用时间:00:00:01
归档日志文件名=/u01/PROD/db/apps_st/data/archive/ARC1_21_825013351.arc 线程=1 序列=21
媒体恢复完成,已用时间:00:00:01
2014 年 4 月 21 日完成恢复
修复故障完成
您想打开数据库吗(输入YES或NO)?是的
数据库已打开
关闭数据库
删除非当前日志组所有的日志文件
[ora_tst@test 跟踪]$ rm -f /u01/oracle/TEST/db/apps_st/data/log01b.dbf
[ora_tst@test 跟踪]$ rm -f /u01/oracle/TEST/db/apps_st/data/log01a.dbf
SQL>启动
ORA-32004: 指定了已过时和/或已弃用的参数
ORACLE 实例已启动。
系统全局区域总计 1068937216 字节
固定大小 2166536 字节
可变大小 427819256 字节
数据库缓冲区 624951296 字节
重做缓冲区 14000128 字节
数据库已安装。
ORA-00313: 线程 1 的日志组 1 的成员打开失败
ORA-00312: 在线日志 1 线程 1: '/u01/oracle/TEST/db/apps_st/data/log01b.dbf'
ORA-27037: 无法获取文件状态
Linux-x86_64 错误:2:没有这样的文件或目录
附加信息:3
ORA-00312: 在线日志 1 线程 1: '/u01/oracle/TEST/db/apps_st/data/log01a.dbf'
ORA-27037: 无法获取文件状态
Linux-x86_64 错误:2:没有这样的文件或目录
附加信息:3
启动数据库时报错
使用DRA修复上述故障
RMAN>列表失败;
使用目标数据库控制文件而不是恢复目录
数据库故障列表
=========================
故障 ID 优先级状态 检测时间摘要
---------- -------- --------- ------------- ----------
999 严重打开 21-APR-14 重做日志组 1 不可用
1005 高 打开 21-APR-14 重做日志文件 /u01/oracle/TEST/db/apps_st/data/log01a.dbf 丢失
1002 高 打开 21-APR-14 重做日志文件 /u01/oracle/TEST/db/apps_st/data/log01b.dbf 丢失
RMAN>建议失败;
数据库故障列表
=========================
故障 ID 优先级状态 检测时间摘要
---------- -------- --------- ------------- ----------
999 严重打开 21-APR-14 重做日志组 1 不可用
1005 高 打开 21-APR-14 重做日志文件 /u01/oracle/TEST/db/apps_st/data/log01a.dbf 丢失
1002 高 打开 21-APR-14 重做日志文件 /u01/oracle/TEST/db/apps_st/data/log01b.dbf 丢失
分析自动修复选项;这可能需要一些时间
分配的通道:ORA_DISK_1
通道 ORA_DISK_1: SID=381 设备类型=DISK
自动修复选项分析完成
强制手动操作
========================
没有可用的手动操作
可选手动操作
=======================
1. 如果文件 /u01/oracle/TEST/db/apps_st/data/log01a.dbf 被无意重命名或移动,请将其恢复
2. 如果文件 /u01/oracle/TEST/db/apps_st/data/log01b.dbf 被无意重命名或移动,请恢复它
3. 如果备用数据库可用,则考虑 Data Guard 切换或故障转移
自动修复选项
========================
选项修复说明
------ ------------------
1 执行不完整的数据库恢复至 SCN 5965141836565
策略:修复包括时间点恢复,但会丢失一些数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_3499717585.hm
RMAN>修复失败预览;
策略:修复包括时间点恢复,但会丢失一些数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_3499717585.hm
修复脚本内容:
# 数据库时间点恢复
恢复数据库直到scn 5965141836565;
恢复数据库直到scn 5965141836565;
更改数据库打开重置日志;
RMAN>修复失败;
策略:修复包括时间点恢复,但会丢失一些数据
修复脚本:/u01/oracle/TEST/db/tech_st/11.1.0/admin/TEST_test/diag/rdbms/test/TEST/hm/reco_3499717585.hm
修复脚本内容:
# 数据库时间点恢复
恢复数据库直到scn 5965141836565;
恢复数据库直到scn 5965141836565;
更改数据库打开重置日志;
您确实要执行上述修复(输入 YES 或 NO)吗?是的
执行修复脚本
2014 年 4 月 21 日开始恢复
使用通道 ORA_DISK_1
通道 ORA_DISK_1:开始数据文件备份集恢复
通道 ORA_DISK_1:指定要从备份集恢复的数据文件
通道 ORA_DISK_1:将数据文件 00001 恢复到 /u01/oracle/TEST/db/apps_st/data/system01.dbf
通道 ORA_DISK_1:将数据文件 00002 恢复到 /u01/oracle/TEST/db/apps_st/data/system02.dbf
通道 ORA_DISK_1:将数据文件 00003 恢复到 /u01/oracle/TEST/db/apps_st/data/system03.dbf
通道 ORA_DISK_1:将数据文件 00004 恢复到 /u01/oracle/TEST/db/apps_st/data/system04.dbf
通道 ORA_DISK_1:将数据文件 00005 恢复到 /u01/oracle/TEST/db/apps_st/data/system05.dbf
通道 ORA_DISK_1:将数据文件 00006 恢复到 /u01/oracle/TEST/db/apps_st/data/ctxd01.dbf
通道 ORA_DISK_1:将数据文件 00007 恢复到 /u01/oracle/TEST/db/apps_st/data/owad01.dbf
通道 ORA_DISK_1:将数据文件 00008 恢复到 /u01/oracle/TEST/db/apps_st/data/a_queue02.dbf
通道 ORA_DISK_1:将数据文件 00009 恢复到 /u01/oracle/TEST/db/apps_st/data/odm.dbf
................................
通道 ORA_DISK_1:将数据文件 00407 恢复到 /u01/oracle/TEST/db/apps_st/data/a_ref02.dbf
通道 ORA_DISK_1:从备份片 /u01/oracle/TEST/db/tech_st/11.1.0/dbs/0ep69g7a_1_1
读取
通道 ORA_DISK_1:片段句柄=/u01/oracle/TEST/db/tech_st/11.1.0/dbs/0ep69g7a_1_1 标签=TAG20140421T110305
通道 ORA_DISK_1:恢复备份片 1
通道 ORA_DISK_1:恢复完成,已用时间:01:16:04
于 2014 年 4 月 21 日完成恢复
2014 年 4 月 21 日开始恢复
使用通道 ORA_DISK_1
开始媒体恢复
线程 1 的序列号为 21 的归档日志已作为文件 /u01/PROD/db/apps_st/data/archive/ARC1_21_825013351.arc
存储在磁盘上
具有序列 22 的线程 1 的归档日志已作为文件 /u01/PROD/db/apps_st/data/archive/ARC1_22_825013351.arc
存储在磁盘上
具有序列 23 的线程 1 的归档日志已作为文件 /u01/PROD/db/apps_st/data/archive/ARC1_23_825013351.arc
存储在磁盘上
具有序列 24 的线程 1 的归档日志已作为文件 /u01/PROD/db/apps_st/data/archive/ARC1_24_825013351.arc
存储在磁盘上
归档日志文件名=/u01/PROD/db/apps_st/data/archive/ARC1_21_825013351.arc 线程=1 序列=21
归档日志文件名=/u01/PROD/db/apps_st/data/archive/ARC1_22_825013351.arc 线程=1 序列=22
归档日志文件名=/u01/PROD/db/apps_st/data/archive/ARC1_23_825013351.arc 线程=1 序列=23
媒体恢复完成,已用时间:00:00:19
2014 年 4 月 21 日完成恢复
数据库已打开
修复故障完成