如何解决 Oracle GoldenGate 没有主键的问题?

340d2bfcab29b975b4082b249cafbb7e.png

针对没有主键的情况,GoldenGate 大概提供了3种方案,大致如下:

  1. 默认使用所有列当主键,通过 keycols 来实现,这种其实存在一定的问题,在这次的项目中直接否定。

  2. 通过在源端表中添加 ogg_key_id 列的方式来实现,这可能会影响应用,因此也直接否定。

  3. 通过在目标端的表中添加 rowid 类型的伪列,来实现。通过测试,发现这种相对靠谱,如下是我的测试过程.

我这里测试的 ogg 抽取 9208 Dataguard standby,同步到10205的例子。

另外,我们这里 9i 的环境和 10g 环境均在同一个主机.

1. 源端

说明:这里我模拟的是 9i 环境超过32列的情况.

—创建测试表

ee9023e660bd4913ec4933eeaf56a129.png

—源端 OGG 配置

896e11e1f90c4aec1de1e8966e9583ce.png

2. 目标端

—创建测试表

80433cedf224b792dd56dbadceb5db62.png

—目标端 OGG 配置

308e493c8fd483fe0828be0c03f0e735.png

3. 启动进程

–源端

acc0d718d9501417127752e0ea21e747.png

—目标端

d25c4feb831e940b859b29891369b923.png

4. 源端插入测试数据

模拟 insert:


–源端

4356b4154225eb90f57e695dc619a2ce.png

—目标端

fb8ad8786b14e1a0946dfba698468bd9.png

模式 delete:

–源端

46d78a57ca01f98b0f05492bd26c4347.png

—目标端:

495a91a419be8e372d5fb37e3cb6163e.png

模拟 update:

—源端:

8893c969dbd7611c83766f4b819e74e2.png


–目标端:

07b897659f2ec4bd2d2ed69993d99fed.png

我们可以看到 ogg 完全是可以支持利用构造 rowid 伪列的方式来解决没有主键的问题。 然而这种方法也有一个很大的问题:迁移之后,新环境中的 row_id 伪列需要进行 drop,这个 drop 的动作是非常坑爹的。

例如我们客户这里的系统,均为 2.5TB 以上的,最大12TB的库,那么 drop column 就疯掉了。

------ The End

文章来源:【love wife & love life —Roger 的 Oracle 技术博客】

配图来源:http://betanews.com/wp-content/uploads/2015/07/encryption_padlock-600x400.jpg

98fb129237dcf1ff2454de97b9285348.png
2015 Oracle 技术嘉年华五折门票抢购中,长按上方图片识别二维码注册参会或者点击原文链接报名!

63945a7613ef373e713a0c428c09b606.png

点击“阅读原文”查看原文章详情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值