看世界12326的gravatar头像
看世界12326 2015-07-23 12:32:56

oracle数据库数据如何同步一张表A数据到mysql一张表B?

各位大神,有没有oracle到mysql数据库同步的方案,我希望实现以下功能 (由于两张表位于不同类型的数据库中,假设一张为A(oracle),一张为B(mysql),A、B对应字段有联系, 同时A表为主表,B表为从表) 1、改动oracle 的表A,同时mysql的B表也自动更新。 2、同时A、B两表进行比较,A中该字段多出的数据要插入B中。即把A中数据复制到B。

所有回答列表(6)
最代码官方的gravatar头像
最代码官方  LV168 2015年7月23日

1.成熟的技术方案,如:goldengate

2.脚本实现,java,shell,php,python都可以,起个定时任务,检查需要同步的表记录然后读取后插入目标库即可

两个方案各有优缺,看你们的业务需求来定吧。

遇见,的gravatar头像
遇见,  LV36 2015年7月23日

有兴趣可以去了解下kettle

hrose12的gravatar头像
hrose12  LV21 2015年7月24日

也有工具 ETL 用过东方通的和金蝶中间件。。。。。

低调式男的gravatar头像
低调式男  LV2 2015年7月24日

楼主既然是想Oracle的表A改动的时候同时更新B,只涉及到这俩表的同步,我觉得可以在更新A表的操作时同时更新操作表B,不管是改代码还是AOP的通知来实现 我觉得都是可以直接解决问题

楼上的解决方案也很好是通用的常规方案,用新的插件、第三方jar包都涉及到一个熟练度学习的过程,楼主看情况自行定夺吧

touch39的gravatar头像
touch39  LV10 2015年7月27日

顶一个,坐等大神解答

815410192的gravatar头像
815410192  LV4 2015年7月31日

不在一个事务,一定存在数据延迟同步问题。方案可以这样:

(1)oracle新增一个和A表结构一致的临时表AT,且在A表新增一个更新触发器TrA,A的数据变动都会将变动之后的数据insert到AT中;

(2)mysql新增一个和B表结构一致的临时表BT,且在BT表新增一个insert触发器TrB,BT的数据变动会将数据根据自己的业务条件进行B表的更新操作;

(3)通过程序设置一个定时器(时间间隔自己调整),定期把AT的数据取出,insert到BT中去。

总结:定时任务始终是操作的临时表结构,不影响正式表结构的使用,且临时表可以保留数据变更的痕迹。缺点:增加了额外的表空间使用。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友