Oracle RMAN 查找一个归档日志archivelog来恢复已脱机的数据文件offline datafile

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

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

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

 

问题描述

====================

 

RMAN在查找一个用于恢复数据文件但已脱机的归档日志。在恢复会话收到以下错误。

 

RMAN-06053: unable to perform media recovery because of missing log

RMAN-06025: no backup of log thread 1 seq 649 scn 1110600 found to restore

 

 

原因

=======

RMAN恢复,查看数据文件头,获取恢复的起点。所以即使数据文件不再属于控制文件(OFFLINE DROP),RMAN 仍知道它并仍反映主/生产数据库的状态。

 

 

解决方法

===========

 

一旦RMAN 还原的文件在sqlplus会话成功执行手动恢复。

 

SQL> recover database until cancel

 

 

 

模拟问题

=====================

 

++  备份所有数据文件。标记此时的日志序列号:635

 

++  进行一些事务Do some transactions. 标记此时的日志序列号:650.

 

++  对除数据文件6以外的所有数据文件进行RMAN 备份

 

run{

allocate channel c1 type disk;

backup datafile 1,2,3,4,5;

release channel c1;

}

 

 

++  进行一些事务Do some transaction将日志序列号提高为669

 

++  在运行下一个命令之前,删除所有磁盘副本和归档日志序列649的副本。

 

++  在这个阶段,执行不完全恢复到日志序列666;

 

使用以下命令:

 

RMAN> run {

set until logseq 666 thread 1;

allocate channel c1 type disk;

restore database;

recover database;

}

 

++  运行RMAN-command,会还原数据文件到以下状态:

 

SQL> select hxfil,fhsta,fhscn,fhrba_seq from x$kcvfh;

 

HXFIL      FHSTA FHSCN             FHRBA_SEQ

—– ———- —————- ———-

1          0 1110781                 650

2          0 1110780                 650

3          0 1110779                 650

4          0 1110780                 650

5          0 1110779                 650

6          0 1109021                 635

====

 

RMAN使用fhrba_seq 650来还原所有数据文件除了文件 6,因为它不被包括在最后的备份中。

 

 

++   此恢复需要从635到666的日志序列号。

恢复失败显示以下错误,因为归档日志649 不在磁盘或备份中

 

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00579: the following error occurred at 03/05/2004 12:16:23

RMAN-03002: failure during compilation of command

RMAN-03013: command type: recover

RMAN-03002: failure during compilation of command

RMAN-03013: command type: recover(4)

RMAN-06053: unable to perform media recovery because of missing log

RMAN-06025: no backup of log thread 1 seq 649 scn 1110600 found to restore

 

++  脱机drop数据文件使恢复从日志序列650开始

SQL> alter database datafile 6 offline drop;

 

++  但即使数据文件6被脱机drop,恢复再次失败,显示相同错误。

 

RMAN> run {

set until logseq 666 thread 1;

allocate channel c1 type disk;

recover database;

}

 

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00579: the following error occurred at 03/05/2004 12:16:23

RMAN-03002: failure during compilation of command

RMAN-03013: command type: recover

RMAN-03002: failure during compilation of command

RMAN-03013: command type: recover(4)

RMAN-06053: unable to perform media recovery because of missing log

RMAN-06025: no backup of log thread 1 seq 649 scn 1110600 found to restore

 

++  SQL> select status from v$datafile where file#=6;

 

STATUS

——-

OFFLINE

 

++  手动重新同步目录catalog 和现有的rman会话,再次尝试仍失败。

 

++  在sqlplus会话中尝试手动恢复。

 

++  SQL> recover database until cancel

ORA-00279: change 1110779 generated at 03/05/2004 10:48:03 needed for thread 1

ORA-00289: suggestion : D:\TEMP\TEMPARC00650.001

ORA-00280: change 1110779 for thread 1 is in sequence #650

 

仅从序列650起请求归档日志,恢复成功完成。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号