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 CURRENT 991157 09-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打开
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24742969/viewspace-1693114/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24742969/viewspace-1693114/