Oracle Data Guard的日志FAL gap问题
在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#<=68051 and b.DEST_ID=1 and b.DELETED='YES';
通过这个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的,所以会有多个实例会提示这种错误,依次解决即可。