更新LOB字段会导致OGG的trail文件爆增

这个问题,很多年前就遇到过,当时比较懒,详细的过程也没记录下来,前几天又有同事遇到了相同的问题,简单记录一下。

 

1、同事在利用OGG进行数据迁移时,发现一天时间内产生了差不多1TB大小的Trail文件,而源端的归档日志才几十GB,这就非常不科学了,按理说,解析归档日志后,生成的Trail文件应该远远小于归档日志大小才对。

 

2、当时,同事随便挑了几个Trail文件,用logdump解析后,发现Trail文件内全部是一张表,这张表里有个LOB字段。为了解决这个问题, 他临时的解决办法就是在Exatract进程中直接屏蔽了这张表,然后一切就恢复正常了,还好, 这张表不大,在正式迁移的当晚,他重新初始化了这张表。(这种方式其实存在一个问题,如果存在LOB字段的这张表非常大,则正式迁移的当晚,是根本没有时间来重新初始化这张表的。)

 

3、其实,Trail文件暴增这个问题的真实原因是Oracle在更新lob字段时,DBMS_LOB.write会循环执行,最终OGG会将这些重复的信息都写入Trail文件中,所以导致了Trail文件暴增。我们可以在Exatract进程的配置文件中添加FETCHOPTIONS SUPPRESSDUPLICATES参数,也即只记录最后的一条DBMS_LOB.write操作。

 

4、在MOS上,有两篇文档说明了这个问题。Extract Generates a Large Volume of Trail Data for Lob Updates on Oracle (Doc ID 1206737.1) 和 Extract Capture Duplicate Lob Updates on Oracle (Doc ID 2679221.1)

 

posted @   石云华  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示