ORA-06054异机恢复经典的错误,06054找的是current redo也就是备份完成那一时刻的current状态的在线日志,
RMAN是不备份online redo log的,所以恢复也不恢复redo
[oracle@guo PROD2]$ ll
total 1762996
-rw-r----- 1 oracle oinstall 9748480 Jun 9
14:52 control01.ctl
-rw-r----- 1 oracle oinstall 362422272 Jun
9 14:45 example01.dbf
-rw-r----- 1 oracle oinstall 576724992 Jun
9 14:45 sysaux01.dbf
-rw-r----- 1 oracle oinstall 754982912 Jun
9 14:45 system01.dbf
-rw-r----- 1 oracle oinstall 94380032 Jun
9 14:45 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Jun 9
14:45 users01.dbf
恢复错误信息
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE
STACK FOLLOWS ===============
RMAN-00571:
===========================================================
RMAN-03002: failure of recover command at
06/09/2015 14:46:00
RMAN-06054: media recovery requesting
unknown archived log for thread 1 with sequence 25 and starting SCN of 991157
查看源机器当前scn
SYS@PROD2 > select * from v$log;
GROUP# THREAD# SEQUENCE#
BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
NEXT_TIME
---------- ---------- ----------
---------- ---------- ---------- --- ---------------- ------------- ---------
------------ ---------
1 1 25
52428800 512 1 NO CURRENT99115709-JUN-15 2.8147E+14就是06054要找的那个
2 1 23
52428800 512 1 YES INACTIVE 991092 09-JUN-15 991143 09-JUN-15
3 1 24
52428800 512 1 YES INACTIVE 991143 09-JUN-15 991157 09-JUN-15
从源机上把redo拷贝过去(需要停机,慎用)
[oracle@guo1 PROD2]$ scp redo0* guo:/u01/app/oracle/oradata/PROD2/
oracle@guo's password:
redo01.log 100% 50MB 16.7MB/s 00:03
redo02.log 100% 50MB 16.7MB/s 00:03
redo03.log 100% 50MB 25.0MB/s 00:02
[oracle@guo1 PROD2]$
异机上
[oracle@guo PROD2]$ ll
total 1882944
-rw-r----- 1 oracle oinstall 9748480 Jun 9
14:52 control01.ctl
-rw-r----- 1 oracle oinstall 362422272 Jun
9 14:45 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Jun
9 14:52 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Jun
9 14:52 redo02.log
-rw-r----- 1 oracle oinstall 17821696 Jun
9 14:52 redo03.log
-rw-r----- 1 oracle oinstall 576724992 Jun
9 14:45 sysaux01.dbf
-rw-r----- 1 oracle oinstall 754982912 Jun
9 14:45 system01.dbf
-rw-r----- 1 oracle oinstall 94380032 Jun
9 14:45 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Jun 9
14:45 users01.dbf
[oracle@guo PROD2]$
再次恢复,正常
RMAN> recover database;
Starting recover at 09-JUN-15
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 25
is already on disk as file /u01/app/oracle/oradata/PROD2/redo01.log
archived log file
name=/u01/app/oracle/oradata/PROD2/redo01.log thread=1 sequence=25
media recovery complete, elapsed time:
00:00:01
Finished recover at
09-JUN-15
不过还是需要resetlogs打开
RMAN> alter database open;
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE
STACK FOLLOWS ===============
RMAN-00571:
===========================================================
RMAN-03002: failure of alter db command at
06/09/2015 14:52:55
ORA-01589: must use RESETLOGS or
NORESETLOGS option for database open
在报06054的时候直接resetlogs打开的时候oracle会自动重建redo
如何解决呢?方法只有一个,将那个时间的日志拷贝过来,进行恢复就可以了。如何拷贝呢?关闭源库后才能拷贝,这个。。。
一般情况下恢复到指定SCN就可以避免这个错误。
确定scn是不是最后的scn,确定了之后直接resetlogs打开。
另外还可以使用RMAN duplicat功能恢复可以不用resetlogs打开