GoldenGate抽取进程延迟严重,论FETCHOPTIONS NOUSESNAPSHOT的重要性

1、案例概述

同事新搭建的一套GoldenGate环境,刚刚搭建时,Extract抽取进程就已经出现延迟现象,当时想着可能很快就能追平,所以最开始也没当回事。结果两天时间,延迟现象没有缓解,已经累积延迟30多个小时。通过info 或者 stats等命令查看进程状态信息, 发现该Extract抽取进程仍然在工作,只是抽取的速度比较慢。

 

2、处理过程

2.1 同事检查GoldenGate日志,没有发现任何异常的日志,只是Extract抽取进程延迟。 但检查数据库日志时,发现异常现象,数据库后台的alert日志提示大量的ORA-01555快照太旧的错误。

2.2 分析这些ORA-01555快照太旧的错误,发现这些报ORA-01555快照太旧的错误的SQL语句,durations几乎为0,同时SQL语句的格式为: select .... from .... as of scn :SCN where rowid=:ROWID; 这种SQL就非常奇怪,通过as of scn的关键字就可以看出,这是从快照中读取数据。

2.3分析gv$session和gv$sql视图,发现上述这些报ORA-01555快照太旧的错误的SQL语句的执行者竟然是GoldenGate的Extract抽取进程。

2.4 到此,大概明白了Extract抽取进程延迟的原因。 Extract抽取进程在抽取某些列的数据时,有两种选择:要么从快照中抽取,要么直接从表数据中抽取,然而默认是从快照中抽取,如果从快照中抽取失败,就会转而从表数据中抽取。每次都会做相同的操作,从而导致数据库后台日志报大量的ORA-01555快照太旧的错误,同时Extract抽取进程延迟。

2.5 明白了这个工作原理后,解决这个问题就非常简单了,直接在Extract抽取进程的配置文件中添加FETCHOPTIONS NOUSESNAPSHOT参数。也即改变抽取进程的默认行为,当需要抽取某些列的数据时,不从快照抽取,直接从表数据中抽取。

2.6 添加参数后,重启Extract抽取进程,观察发现Extract抽取进程工作效率大幅提升,累积延迟了30多个小时的数据,在短短的20分钟内追平。

 

posted @   石云华  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
历史上的今天:
2018-11-14 Exalogic硬件架构
点击右上角即可分享
微信分享提示