日期:2014-05-16  浏览次数:20649 次

90分给1人,其他大家分求,ORACLE同步到MYSQL方案。
如题:求ORACLE同步到MYSQL方案。毫秒级的。

------解决方案--------------------
还真不会,是我就只能用开发语言来实现了,先插oracle再插mysql..
------解决方案--------------------
看来难度不小了 好多大牛也只能看看 顶下吧
------解决方案--------------------
只有通过数据链两段式提交,才能保证事务一致性。
异构数据库数据链配置比较繁琐。
http://topic.csdn.net/u/20100728/15/219af6d6-8784-47b0-b169-5e5d139778c2.html?88610
------解决方案--------------------

如果你要简单,并且网络总是可以保证两边同时连得到的话,当然同进同退,这边INSERT一条,那边就INSERT一条.

----------------------------------------

但,如果你的网络并非总是通的,比如互联网上多个点的不同数据库(而且你还是不同的DBMS),就要想办法。当然外面有现成的解决方案,都很贵。

多个数据库双向同步的话,也就是多个数据库各自可以INSERT/UPDATE/DELETE 最后再同步(方便起见,DELETE一般处理成UPDATE,做个DELETE的标记),一般我是手工写同步程序(当然有自动生成代码的工具,自己写一个)

要同步的表,全部在原有的基础上建两个字段,数据库标识,最后更新时间.

前台程序,每个数据库只能更新它自己的,更新或INSERT时,修改"最后更新时间".

部份重要字段,可能要单独建一个关于这个字段的最后更新时间.下面再说明,比如用户密码,以最后更改这个字段实际更改的为准.

----------------------------------------


数据库A INSERT/UPDATE当时可能无法连到B/C/D......,以后再做。

当A的一张表要向B同步时,找到B中关于A的最后记录的时间,超过这个时间的,全部INSERT或UPDATE过去.

----------------------------------------

大致会有两种数据,一种是基本资料,一种是流水帐.

我们做个简单的例子,一个连锁店的多个分店,它们的数据库不一定可以永运互相连到.

基本资料比如,

客户资料,数据库ID+会员卡号形成主键.前台程序查找会员资料时,同一个会员号可能会有多条记录(多个数据库不同时INSERT形成的),以最后更新的为准.
部份字段非常重要,比如黑名单和白名单,以单独建的关于这个字段的最后更新时间那一个为准.又比如会员自己设的密码,要以最后一个更新为准.

流水帐的那些数据,比如消费记录,基本上不需要UPDATE,那边有的,这边没有就INSERT进去.

还有一些可能要算合计数,比如在各个店的充值总数和刷卡总数,或算最大值(或最小值),比如某个店延长他的会员级别一年.

这些东西,如果业务程序写之前就规划好,基本上很好写.

如果没规划好,也不会很麻烦,全部东西做成视图,原来的表名换一个,再用原来的表名建一个视图

当然啦,这只能是大致的思路,而且你要近乎同步的,要完全的解决方案,一般都是几百万几百万地卖.

看你数据量和实际要求和预算.但你是单向的,其中一个数据库基本上只是备份或查询专用的,会容易很多。
------解决方案--------------------
godengate
------解决方案--------------------
使用Oracle网关,实现数据复制。