oracle探究,ORA-06054探究

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打开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值