在oracle data guard环境中,一个备库出现问题,需要重做。因为之前的配置环境都是好的,只需将主库的全库备份恢复到备库即可。但
在oracle data guard环境中,一个备库出现问题,需要重做。因为之前的配置环境都是好的,只需将主库的全库备份恢复到备库即可。但在数据文件还原完成后,介质恢复时在alert.log中提示有gap的日志文件,rfs进程继续去提取主库上的其他的归档日志文件。
alert.log文件中提示信息如下:
tueapr 9 14:20:56 2013
mediarecovery log +logdg/servdg2/archivelog/2013_04_09/thread_1_seq_71989.3551.812298053
mediarecovery waiting for thread 2 sequence 68042
fetchinggap sequence in thread 2, gap sequence 68042-68094
tueapr 9 14:20:58 2013
rfs[1]:archived log:
'+logdg/servdg2/archivelog/2013_04_09/thread_2_seq_68052.2968.812298059'
tueapr 9 14:21:31 2013
fetchinggap sequence in thread 2, gap sequence 68042-68051
tueapr 9 14:22:06 2013
fal[client]:failed to request gap sequence
gap - thread 2 sequence 68042-68051
dbid 3658273059 branch 717104091
fal[client]:all defined fal servers have been attempted.
-------------------------------------------------------------
check thatthe control_file_record_keep_time initialization
parameteris defined to a value that is sufficiently large
enough tomaintain adequate log switch information to resolve
archiveloggaps.
-------------------------------------------------------------
备库因日志中断而不能继续进行介质恢复。我们的问题就是如何将这些日志文件找回来。
在主库中,判断归档日志状况。
select *from v$archived_log b where b.sequence#>=68042 and b.thread#=2 andb.sequence#
通过这个sql,确认这些归档日志已经被删除了。
归档日志文件通过rman工具定期删除的,因为还原数据文件过程很长,在还原完成后,归档日志已经备份移走了。
rman>list backup of archivelog from sequence 68042 until sequence 68051 thread 2;
在rman备份集中找到结果集,使用restore archivelog还原。
rman>restore archivelog from sequence 68042 until sequence 68051 thread 2;
这样,备库上又能继续获取这些归档日志文件了。如果没有,在主库上将指向该备库的log_archive_dest_state_*先defer再enable一下,算是激活这个服务。
因为主库是rac的,所以会有多个实例会提示这种错误,依次解决即可。
,