一.概述:
Gap定义及产生原理:Gap英文单词的意思就是缝隙的意思,dataguard中出现gap的原理是:源端传递一个archivelog到目标端之后会在目标数据库进行注册,当中间某个archivelog归档到目标端失败或者没有成功注册且后续的archivelog成功归档的话目标端在恢复过程中就会将中间的sequence定义为gap。举例:
1).在single to single环境中sequence 100成功发送到目标端但是还没有应用2).sequence 101~110因网络中断而归档失败且超过重试次数;3).sequence 111的时候网络恢复且成功注册到目标数据库;4).MRP进程应用到101这个sequence的时候就会检测到101~110这个gap( 注意:gap是mrp在恢复的时候检测的,它只会汇报影响apply日志的gap,当前gap后面是否有gap它无法报告)
影响gap产生的因素:
1).日志产生速度与网络带宽2).网络稳定性减少产生gap的可能性:
1).提升网络带宽;2).启用log_archive_dest_n的compression属性可以压缩到70%的网络占用(需要额外购买license)3).启用多个进程并发传送同一个archivelog (max_connections)
修复gap方法:为了保证standby的数据与primary数据的一致性我们需要对目标端的数据进行手工解决gap,本文通过以下两种方式对源端和目标端的gap进行修复: