Oracle RMAN: 所有online REDO日志文件都损坏时的恢复方法

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638    QQ号:47079569    邮箱:service@parnassusdata.com

 

[Problem]

包含current的online REDO日志文件全部损坏了。

控制文件,数据文件没有损坏。

用RMAN获得备份。

使用catalog。并以归档日志模式来使用。

通过RMAN来修复的方法。

 

[To reproduce]

包含current的online REDO日志文件都损坏时,就会发生这样的故障。

 

SVRMGR> alter system switch logfile;

ORA-03113: end-of-file on communication channel

 

Alertファイル:

Thu Nov 30 17:46:50 2000

Errors in file /export/home/rman/ora816c/admin/tar816c/bdump/tar816c_lgwr_1880.trc:

ORA-00313: open failed for members of log group 3 of thread 1

ORA-00312: online log 3 thread 1: ‘/export/home/rman/ora816c/oradata/tar816c/redo03.log’

ORA-27037: unable to obtain file status

SVR4 Error: 2: No such file or directory

Additional information: 3

Thu Nov 30 17:46:50 2000

LGWR: terminating instance due to error 313

Instance terminated by LGWR, pid = 1880

 

因为无法进行日志的switch,LGWR异常终止,实例下降

 

[Action]

以下是数据库的online REDO日志文件全部损坏时的对策(包含current)。

请大家注意,前提是控制文件,数据文件,归档完成的日志文件都没有损坏。。

 

  1. 如果数据库正在运行的话,数据库就会崩溃。

因为online REDO日志文件损坏了,所以一般不会崩溃。

进行shutdown abort。

 

  1. 将数据库mount。

SVRMGR> startup mount

 

3.启动RMAN,连接目标数据库与catalog数据库。

% rman target system/manager@target catalog rman/rman@catalog

 

  1. 查看归档日志文件的状况,可以应用的归档日志文件的日志顺序编号。

 

 

Alert文件:

Thu Nov 30 17:37:30 2000

Thread 1 advanced to log sequence 15

Current log# 2 seq# 15 mem# 0: /export/home/rman/ora816c/oradata/tar816c/redo02.log

Thu Nov 30 17:37:30 2000

ARC0: Beginning to archive log# 1 seq# 14

ARC0: Completed archiving log# 1 seq# 14

Thu Nov 30 17:46:50 2000

Errors in file ….

 

在发生故障之前,寻找归档完成的部分。通过上述记录,我们可以知道日志序号14之前的日志都玩了归档(现在的日志编号为15)

 

如果实例为mount状态的话,通过SVRMGR,也可以查看到同样的信息。

SVRMGR> archive log list

数据库日志模式;归档模式

自动归档             可以使用

归档地址            /export/home/rman/ora816c/arch

最旧的online日志顺序编号     14

然后是归档日志顺序编号   15

现有的日志顺序编号           15

 

  1. 通过RMAN执行restore recovery。

日志顺序编号 因为我们知道直到14号为止,都完成了归档,应用14号前的日志顺序编号,启动、

因为是不完全恢复,所以需要restore所有数据文件。

 

执行命令:

RMAN> run {

2> allocate channel ch1 type disk;

3> set until logseq 15 thread 1;       ==> チェック(1)

4> restore database;

5> recover database;

6> sql ‘alter database open resetlogs’; ==> チェック(2)

7> }

 

检测项目:

(1) 指定恢复到哪个时点为止。

set until logseq 15 thread 1;

请应用到日志顺序编号14为止。

(2) 因为是执行不完全恢复,启动时,需要resetlogs选项。

 

部分执行日志:

RMAN-03022: Compile command: recover

 

RMAN-03022: Compile command: recover(1)

 

RMAN-03022: Compile command: recover(2)

 

RMAN-03022: Compile command: recover(3)

RMAN-03023: 実行コマンド: recover(3)

RMAN-08054: メディアのリカバリを開始します。

 

RMAN-03022: Compile command: recover(4)

RMAN-06050: 归档日志线程 1、順序 11作为文件 /export/home/rman/or

a816c/arch/arch_1_11.arc存在于磁盘中。

RMAN-06050: 归档日志线程 1、順序 12作为文件/export/home/rman/or

a816c/arch/arch_1_12.arc存在于磁盘中。

RMAN-06050: 归档日志线程 1、順序 13作为文件/export/home/rman/or

a816c/arch/arch_1_13.arc存在于磁盘中。

RMAN-06050: 归档日志线程 1、順序 14作为文件/export/home/rman/or

a816c/arch/arch_1_14.arc存在于磁盘中。

RMAN-03023: 执行命令: recover(4)

RMAN-08515: 归档日志文件名=/export/home/rman/ora816c/arch/arch_1_11.arc

スレッド=1 順序=11

RMAN-08515: 归档日志文件名=/export/home/rman/ora816c/arch/arch_1_12.arc

线程=1 順序=12

RMAN-08515: 归档日志文件名=/export/home/rman/ora816c/arch/arch_1_13.arc

线程=1 順序=13

RMAN-08515: 归档日志文件名=/export/home/rman/ora816c/arch/arch_1_14.arc

线程=1 順序=14

RMAN-08055: 介质恢复完成。

 

==> 损坏的online REDO日志文件(順序番号 15号)没有应用。

 

  1. 因为添加resetlogs选项启动数据库,恢复日志文件也会通知。

 

RMAN> reset database;

 

  1. 为了防御今后的故障,请一定要获得备份。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号