需求:实现Oracle数据库表记录变更后的准实时同步。
可选方案:
1、基于时间戳来检测变更
要求:
a、需同步的表均需要添加时间戳字段,并在更改数据后,同步更新时间戳
b、对于删除操作,需要额外处理。或通过触发器记录,或者不真实删除记录,仅仅设置删除标记。
c、业务层编码实现同步
缺点:
对系统增加了额外约束
同步的实时性取决于轮训的时间间隔
2、基于触发器来记录变更
要求:
a、对于所有同步的表,均需要编写触发器
b、可基于dblink直接将变更应用到远程数据库
c、或触发器将变更统一记录到一张表中,然后业务层编码实现同步
缺点:
可维护性较差,性能较差
有潜在问题:oracle官方说明,不保证触发器只触发一次
3、基于Oracle快照和物化视图实现同步
要求:
a、对于需同步的表,需要建立快照表,触发器等
4、基于Oracle Database Change Notification实时获取变更
要求:
a、需要确保应用与数据库的一直连接
缺点:
在连接断开后,下次连接建立之前,数据库的变更会丢失
适合于对数据要求不高的场合,比如实时获取GPS信息等,丢失的信息影响不大
5、基于Oracle Streams方案实现同步
要求:
a、Oracle需要以归档模式运行
b、需要在源数据库和目标数据库中编写相应的存储过程,来完成变更捕获、传播和变更应用
优点:
基本可实现实时同步
可在数据库层,完全基于Streams实现一对一、一对多等数据复制需求
缺点:
难度较大,需要对Oracle Streams有一定的认识
需在源数据库和目标数据库做不同的处理
工程人员实施有一点难度
6、基于Oracle Streams + Oracle AQ 捕获变更,发布变更
要求:
a、Oracle需要以归档模式运行
b、仅基于Streams捕获本地数据库变更
c、通过Oracle的消息队列AQ,来发布变更
d、业务层通过JMS获取变更,并应用到目标数据库
备注:
方案6为方案5的简化,仅依赖于Streams来捕获变更,发布变更。变更的应用需要编码实现。
该方案主要是为了降低工程维护的复杂性。
相关推荐
一个mysql数据库数据同步至oracle数据库代码,同时修改mysql数据表标识。
Windows Oracle Golden Gate 单向数据同步 , 重要用于数据库容灾备份以及数据分发。本文基于Windows系统操作。
SpringBoot定时任务实现Oracle和mysql数据同步
Oracle笔记Oracle笔记Oracle笔记Oracle笔记Oracle笔记Oracle笔记
ORACLE DBA工作笔记 运维数据迁移与性能调优 清晰版 。。。
内容涉及oracle 12的容器数据库,可插入数据库,目前只做了DML的数据同步(不含ddl的同步)
Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记
Python实现两个Oracle数据库同步工作
Oracle学习笔记精华版Oracle学习笔记精华版Oracle学习笔记精华版Oracle学习笔记精华版
两个Oracle 数据表同步,只是使用两个不同Oracle 数据的某些表保持数据相同.也许你能用到.
《涂抹Oracle—三思笔记之一步一步学Oracle》很好的学习oracle书籍,值得一看
oracle在两台电脑上 跨实例 数据同步
Oracle非常有用的笔记。。。。。。。。。。。Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记
本文档主要是网易云李兴华老师进行授课时所作笔记,从Oracle11g数据库的安装到复杂查询做了详细的文档记录。
为了满足客户的要求,客户要求两台数据库服务器在不能直接通信的情况下,要保证两台数据库数据保持同步,并且要保证效率,数据量一般每分钟最少可以到达2万条(只能通过端口访问),所以只能使用程序先生成满足特定...
涂抹Oracle 三思笔记之一步一步学Oracle(7-zip 压缩)
oracle随手笔记oracle随手笔记oracle随手笔记oracle随手笔记
巧用dblink结合oracle快照实现两台服务器的数据同步 有详细步骤
oracle学习笔记 oracle学习笔记oracle学习笔记 oracle学习笔记