您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Oracle >> 如何跨Oracle数据库实现表级别的实时同步

如何跨Oracle数据库实现表级别的实时同步

来源:网络整理     时间:2017/1/26 12:22:18     关键词:

关于网友提出的“ 如何跨Oracle数据库实现表级别的实时同步”问题疑问,本网通过在网上对“ 如何跨Oracle数据库实现表级别的实时同步”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何跨Oracle数据库实现表级别的实时同步
描述:

oracle实时同步

有两个Oracle数据库,分别布置在不同的服务器上,系统均为windows2003;
这里暂且说成是一个主数据库和从数据库;
(1) 主数据库:oracle_A;
(2) 从数据库:oracle_B;
在oracle_A中有一个表table_A与oracle_B中的表table_B结构相同;
我是处在oracle_B,拥有一个用户可以访问oracle_A中的表table_A,该用户只拥有查询的权限;
我的问题的是,如何在oracle_A中表table_A发生变化时,进行及时更新同步到oracle_B的table_B中?
我现在的处理方式:
通过建立远程连接DBLink+JOB定时任务+存储过程的方式,实现了定时同步更新,但不能做到实时同步.
现在要求升级:
经理要求实现实时更新,大家有没有好的方法.简便一点的,最好具体一点,O(∩_∩)O谢谢.在线等....


解决方案1:

引用 11 楼 javaee_sunny 的回复:
Quote: 引用 8 楼 sxq129601 的回复:

Quote: 引用 7 楼 javaee_sunny 的回复:

Quote: 引用 2 楼 sxq129601 的回复:

就一张表吗,搞个stream把
使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.

这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
在部署测试的过程中,oracle_A的table_A表中,只有一条数据,当时我把job的定时任务设成间隔是1分钟.在运转一段时间之后,电脑接近卡死状态.
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.

如果只是针对新增、修改、删除操作的数据同步,没有涉及到业务逻辑的。可以在源库的表上建个物化日志,这样就记录了主键信息,然后存储过程针对这个物化日志去操作目标库数据库的表,最后删除物化日志。基本可以实现5秒内跑完。JOB定个10秒都没问题 解决方案2:

引用 17 楼 javaee_sunny 的回复:
Quote: 引用 14 楼 sych888 的回复:

对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.

嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显

以上介绍了“ 如何跨Oracle数据库实现表级别的实时同步”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4212295.html

相关图片

相关文章