在之前的控制文件恢复过程中使用‘recover database'命令恢复数据库时要求所有的归档日志都是可访问的,如果某个归档日志出现损坏和丢失,那整个的恢复步骤又不一样,下面的例子说明在备份完控制文件后,某个归档日志丢失且所有控制文件损坏是如何进行实例恢复(前提是数据库开启归档日志)。
注:某个归档日志丢失后备份了控制文件,之后所有控制文件损坏的恢复步骤和之前的恢复步骤没有区别。
DB:Oracle 11g 11.2.0.3.0 X86_64,OS RHEL 6.3 X86_64,未使用Recovery Catalog1.1备份控制文件
RMAN> configure controlfile autobackup on;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN> backup current controlfile;
Starting backup at 03-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=133 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 03-JAN-13
channel ORA_DISK_1: finished piece 1 at 03-JAN-13
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2013_01_03/o1_mf_ncnnf_TAG20130103T163808_8gbjvnh7_.bkp tag=TAG20130103T163808 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 03-JAN-13
Starting Control File and SPFILE Autobackup at 03-JAN-13
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_03/o1_mf_s_803752695_8gbjvs9b_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 03-JAN-13
1.2查询v$log视图,找出'CURRENT'状态的redo日志
SYS@orcl>select group#,sequence#,status,members,archived from v$log; ---当期redo日志是12号
GROUP# SEQUENCE# STATUS MEMBERS ARC
---------- ---------- ---------------- ---------- ---
1 10 INACTIVE 1 YES
2 11 INACTIVE 1 YES
3 12 CURRENT 1 NO
1.3创建scott schema下的test表,并查处完成建表的redo日志
SYS@orcl>create table scott.test as select * from scott.emp;
Table created.
SYS@orcl>select count(*) from scott.test;
COUNT(*)
----------
14
---查出当期redo日志仍然是12号,12号redo日志包含上面建表的重做信息,这个例子中每个日志组的成员只有一个,生产环境下要保证至少有2-3个组成员
SYS@orcl>select group#,sequence#,status,members,archived from v$log;
GROUP# SEQUENCE# STATUS MEMBERS ARC
---------- ---------- ---------------- ---------- ---
1 10 INACTIVE 1 YES
2 11 INACTIVE 1 YES
3 12 CURRENT 1 NO
1.4切换日志组,使得12号redo日志归档
SYS@orcl>alter system switch logfile;
System altered.
SYS@orcl>alter system switch logfile;
System altered.
SYS@orcl>alter system switch logfile;
System altered.
SYS@orcl>alter system switch logfile;
System altered.
---当前日志组是16号,12号日志组已经归档
SYS@orcl>select group#,sequence#,status,members,archived from v$log;
GROUP# SEQUENCE# STATUS MEMBERS ARC
---------- ---------- ---------------- ---------- ---
1 16 CURRENT 1 NO
2 14 INACTIVE 1 YES
3 15 ACTIVE 1 YES
1.5查出12号redo日志的归档文件并删除
SYS@orcl>select name,sequence#,first_time from v$archived_log where sequence#=12 and to_char(first_time,'YYYY-MM-DD')='2013-01-03';
NAME
--------------------------------------------------------------------------------
SEQUENCE# FIRST_TIM
---------- ---------
/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_12_8gbjzkts_.arc
12 03-JAN-13
[oracle@ora ~]$ rm /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_12_8gbjzkts_.arc
1.6使所有的控制文件不可用
[oracle@ora ORCL]$ dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/control01.ctl bs=512K count=10;
10+0 records in
10+0 records out
5242880 bytes (5.2 MB) copied, 0.00586479 s, 894 MB/s
[oracle@ora ORCL]$ dd if=/dev/zero of=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl bs=512K count=10;
10+0 records in
10+0 records out
5242880 bytes (5.2 MB) copied, 0.00559785 s, 937 MB/s
[oracle@ora ORCL]$ dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/control03.ctl bs=512K count=10;
10+0 records in
10+0 records out
1.7启动实例到nomount状态
SYS@orcl>startup force nomount;
ORACLE instance started.
Total System Global Area 1887350784 bytes
Fixed Size 2229464 bytes
Variable Size 1107299112 bytes
Database Buffers 771751936 bytes
Redo Buffers 6070272 bytes
1.8从1.1的自动备份里恢复控制文件
RMAN> restore controlfile from autobackup;
Starting restore at 03-JAN-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK
recovery area destination: /u01/app/oracle/fast_recovery_area
database name (or database unique name) used for search: ORCL
channel ORA_DISK_1: AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_03/o1_mf_s_803752695_8gbjvs9b_.bkp found in the recovery area
AUTOBACKUP search with format "%F" not attempted because DBID was not set
channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_03/o1_mf_s_803752695_8gbjvs9b_.bkp
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/u01/app/oracle/oradata/orcl/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
output file name=/u01/app/oracle/oradata/orcl/control03.ctl
Finished restore at 03-JAN-13
1.9使实例到mount状态
RMAN> mount database;
database mounted
released channel: ORA_DISK_1
1.10执行'recover database'命令恢复数据库
RMAN> recover database;
Starting recover at 03-JAN-13
Starting implicit crosscheck backup at 03-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK
Crosschecked 1 objects
Finished implicit crosscheck backup at 03-JAN-13
Starting implicit crosscheck copy at 03-JAN-13
using channel ORA_DISK_1
Finished implicit crosscheck copy at 03-JAN-13
searching for all files in the recovery area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_9_8gbjxsow_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_7_8gbjxn5x_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_14_8gbjzqvh_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_6_8gbjxlow_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_10_8gbjxv45_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_11_8gbjxwgy_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_15_8gbjzspz_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_13_8gbjzm4x_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_8_8gbjxrdj_.arc
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_03/o1_mf_s_803752695_8gbjvs9b_.bkp
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 6 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_6_8gbjxlow_.arc
archived log for thread 1 with sequence 7 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_7_8gbjxn5x_.arc
archived log for thread 1 with sequence 8 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_8_8gbjxrdj_.arc
archived log for thread 1 with sequence 9 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_9_8gbjxsow_.arc
archived log for thread 1 with sequence 10 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_10_8gbjxv45_.arc
archived log for thread 1 with sequence 11 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_11_8gbjxwgy_.arc
archived log for thread 1 with sequence 13 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_13_8gbjzm4x_.arc
archived log for thread 1 with sequence 14 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_14_8gbjzqvh_.arc
archived log for thread 1 with sequence 15 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_15_8gbjzspz_.arc
archived log for thread 1 with sequence 16 is already on disk as file /u01/app/oracle/oradata/orcl/redo01.log
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_6_8gbjxlow_.arc thread=1 sequence=6
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_7_8gbjxn5x_.arc thread=1 sequence=7
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_8_8gbjxrdj_.arc thread=1 sequence=8
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_9_8gbjxsow_.arc thread=1 sequence=9
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_10_8gbjxv45_.arc thread=1 sequence=10
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_11_8gbjxwgy_.arc thread=1 sequence=11
unable to find archived log
archived log thread=1 sequence=12
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/03/2013 16:44:53
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 12 and starting SCN of 1088992
---在执行恢复过程中提示找不到12号的归档日志
---查询v$archived_log视图得知归档日志最大的序列号是16
SYS@orcl>select max(sequence#) from v$archived_log where to_char(first_time,'YYYY-MM-DD')='2013-01-03';
MAX(SEQUENCE#)
--------------
16
---查询v$log试图得知数据库CURRENT的日志是6号
SYS@orcl>select sequence# from v$log where status='CURRENT';
SEQUENCE#
----------
6
1.11创建新控制文件,使新控制文件不知道CURRENT日志的序列号,不强制要任何日志对其恢复
SYS@orcl>alter database backup controlfile to trace; ---保存控制文件到trace文件
Database altered.
SYS@orcl>select value from v$diag_info where name='Default Trace File'; ---查询trace文件位置
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_15729.trc
SYS@orcl>startup force nomount; ---重启实例到nomount状态
ORACLE instance started.
Total System Global Area 1887350784 bytes
Fixed Size 2229464 bytes
Variable Size 1107299112 bytes
Database Buffers 771751936 bytes
Redo Buffers 6070272 bytes
---使用trace文件中带'NORESETLOGS'关键字的'CREATE CONTROLFILE'语句创建新控制文件
SYS@orcl>CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf'
CHARACTER SET AL32UTF8
;
Control file created.
1.12再执行'recover database'命令恢复数据库
RMAN> recover database;
Starting recover at 03-JAN-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK
starting media recovery
archived log for thread 1 with sequence 15 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_15_8gbjzspz_.arc
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_15_8gbjzspz_.arc thread=1 sequence=15
unable to find archived log
archived log thread=1 sequence=16
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/03/2013 16:59:52
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 16 and starting SCN of 1089055
---提示找不到16号归档日志
---查询v$log视图可知16号日志是当前日志组,没有被归档
SYS@orcl>select sequence#,status,group# from v$log;
SEQUENCE# STATUS GROUP#
---------- ---------------- ----------
16 CURRENT 1
15 INACTIVE 3
14 INACTIVE 2
---使用sqlplus的recover database命令进行恢复
SYS@orcl>recover database using backup controlfile;
ORA-00279: change 1089055 generated at 01/03/2013 16:40:25 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_03/o1_mf_1_16_%u_.arc
ORA-00280: change 1089055 for thread 1 is in sequence #16
Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ---回车,再输入16号日志组的成员路径,应用redo日志进行恢复
/u01/app/oracle/oradata/orcl/redo01.log
Log applied.
Media recovery complete.
1.13以resetlogs命令打开实例
SYS@orcl>alter database open resetlogs;
Database altered.
---添加临时数据文件
SYS@orcl>alter tablespace temp add tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf' reuse;
Tablespace altered.
1.14再查询test表,数据依旧存在
SYS@orcl>select count(*) from scott.test;
COUNT(*)
----------
14
1.15执行'catalog db_recovery_file_dest'命令找回快速恢复区的备份信息
RMAN> list backup;
specification does not match any backup in the repository
RMAN> catalog db_recovery_file_dest;
searching for all files in the recovery area
List of Files Unknown to the Database
=====================================
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_03/o1_mf_s_803752695_8gbjvs9b_.bkp
File Name: /u01/app/oracle/fast_recovery_area/ORCL/backupset/2013_01_03/o1_mf_ncnnf_TAG20130103T163808_8gbjvnh7_.bkp
Do you really want to catalog the above files (enter YES or NO)?
resthighlevelclient初始化 reset idrac configurations to defaults
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章