暂无图片
goldengate 抽取进程报错
我来答
分享
有理想的咸鱼
2024-02-27
goldengate 抽取进程报错

ogg 在同步mysql时,mysql必须要有主键或者唯一约束么?我在做测试的时候,mysql 没建主键和唯一约束,但是抽取进程直接报错

2024-02-27 13:58:40 ERROR OGG-00146 Call to VAMRead returned with error status 600: VAM Client Report <CAUSE OF FAILURE : Column count for
the current record does not match with the column count of the table metadata for table oggtest.test

还是所有非oracle数据库,都需要有主键或唯一约束才能抽取呢

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
yBmZlQzJ

在使用OGG同步MySQL时,并非一定要求MySQL表必须有主键或唯一约束,但在实际操作中,没有主键或唯一约束可能会导致问题。

对于OGG在同步过程中对MySQL表的要求,虽然技术上OGG可以处理没有主键的表,但这通常不被推荐。没有主键的表可能会引起性能问题和数据一致性问题,因为OGG默认会将一行数据中的所有列拼接起来作为唯一键,这可能还是会出现重复数据导致的问题。

对于非Oracle数据库,比如MySQL、SQL Server等,在使用OGG进行数据抽取时,同样最好是有主键或唯一约束。这是因为OGG的工作原理是通过日志捕获技术来实时增量地集成数据,如果没有明确的主键或唯一性索引,就可能无法准确地追踪记录的变化,尤其是在有更新操作的情况下。

总之,尽管OGG理论上可以同步没有主键或唯一约束的表,但为了避免潜在的问题,最佳实践是在配置OGG同步前确保涉及的表具备合适的主键或唯一性索引。

暂无图片 评论
暂无图片 有用 1
打赏 0
有理想的咸鱼
题主
2024-02-27
是的,我也是这么理解的,但是在我的这个环境里就不行,有唯一索引的时候,我insert 正常同步,然后我drop 了索引,抽取进程直接就停了。。。我就不明白了
lianR

Oracle  GoldenGate  (OGG)  抽取进程确实需要在源表上有主键或唯一约束。这是因为OGG需要这些约束来唯一地标识每一行数据,以便在目标数据库中进行正确的插入、更新或删除操作。

如果源表没有主键或唯一约束,OGG可能无法正确地识别和处理数据变化,从而导致数据同步错误或数据不一致。

所以,不仅是MySQL,对于所有的数据库类型,OGG都需要有主键或唯一约束才能进行数据抽取。如果源表没有主键或唯一约束,建议你添加一个,或者使用其他方式(如使用ROWID)来唯一标识每一行数据。

暂无图片 评论
暂无图片 有用 3
打赏 0
有理想的咸鱼
题主
2024-02-27
抽取进程不应该因为有没有主键或唯一约束,应该是复制进程要求,才能保证目标端数据的准确性,抽取我的理解是解析日志来获取变化的数据,这里本身就不需要确认是否唯一,而复制进程却需要定位到具体数据,才需要唯一约束,如果我的这个问题出现在复制进程,我还能理解,但是却出现在抽取进程
Thomas

从错误来看,应该是column count不一致。源数据的表定义在哪里,用def文件么

暂无图片 评论
暂无图片 有用 0
打赏 0
有理想的咸鱼
题主
2024-02-29
我出问题的是抽取进程啊,也不需要def啊。。。。。
魔术师

你的表结构是不是发生了变化?

暂无图片 评论
暂无图片 有用 0
打赏 0
有理想的咸鱼
题主
2024-03-01
不是,我自己做的测试,有约束的时候没问题,删除唯一索引,就报错了
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏