欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle Data Guard的日志FAL gap问题

程序员文章站 2022-06-13 18:14:17
...

在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的,所以会有多个实例会提示这种错误,依次解决即可。