You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle GoldenGate 19C抽取trail文件缺列导致副本端列未更新问题求助

OGG 19c集成模式trail未捕获全列问题排查结果

核心根因

你场景中的TRAN_TABLE启用了表压缩,是触发该问题的核心原因,Oracle 19c对压缩表的redo记录逻辑和OGG集成抽取的特性共同导致trail未捕获全量列:

具体原因说明

  • 压缩表的补充日志记录规则限制:即使开启了数据库级SUPPLEMENTAL LOG DATA (ALL) COLUMNS,Oracle 12c及以上版本对压缩表(含OLTP压缩、高级压缩)的UPDATE操作,默认不会在redo日志中记录未修改的列,仅会写入修改列、主键/唯一键列,OGG Extract无法从redo中读取到未记录的列,因此后镜像只有变更列数据。
  • 补充日志生效范围校验缺失:库级全列补充日志对部分特殊属性表可能不生效,你没有额外校验过表级补充日志的实际配置,若表本身没有生效的全列补充日志组,即使库级配置正确也不会记录全列数据。
  • 空值列更新的优化逻辑影响:你场景中EffectiveDate是从NULL值更新为非NULL值,压缩表的redo优化逻辑会默认跳过NULL值旧列的记录,进一步加剧了列缺失的问题。

解决方案

  1. 若允许修改表压缩属性,先关闭该表压缩属性验证:
ALTER TABLE MYSCHEMA.TRAN_TABLE NOCOMPRESS;

执行全量同步该表后重新测试UPDATE操作,确认trail是否可以捕获全列。
2. 若必须保留表压缩属性,手动创建表级强制全列补充日志组:

ALTER TABLE MYSCHEMA.TRAN_TABLE ADD SUPPLEMENTAL LOG GROUP log_group_tran_table (ALL) COLUMNS ALWAYS;

创建完成后重启Extract进程再测试同步。
3. 补充Extract参数配置,开启缺失列主动抓取能力,在Extract参数中添加如下配置:

FETCHOPTIONS FETCHPKUPDATECOLS

配置后OGG抽取时若发现redo中缺少列数据,会主动查询源端表获取对应列值填充到trail中,需确保OGG数据库账号拥有该表的SELECT权限。

验证方法

修改配置后执行测试UPDATE操作,使用logdump查看trail文件的后镜像,确认所有列均有正确值即可。

内容的提问来源于stack exchange,提问作者dowonderatwill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:39:02