之前调研了下基于mysql的数据增量采集方案,目前有阿里的canal和Open Replicator,均是基于MySQL binlog分析的开源项目。Open Replicator仅提供了binlog解析;canal基于数据库增量日志解析,提供增量数据订阅&消费,在binlog分析的基础上进行了封装,并有相匹配的canal消费端项目开源: Otter(分布式数据库同步系统),相对有一套比较完整的增量数据订阅&消费方案。
canal除了MySQL,还提供Oracle部分版本的日志解析,但可惜目前仅开源MySQL部分。对于Oracle增量数据同步,首先想到的就是触发器,在测试表上建立触发器进行测试,可监控数据的增删改操作。但触发事件与触发器处于同一事物中,commit前就会执行触发器。若触发器中有一些非事务操作,比如:向外部发送变化事件及数据,这样未提交数据就已发送出去了,这时候rollback事物,无法撤销非事务操作。因此,我们必须让触发器监听已提交数据的变化。经过调研,在物化视图上建立触发器可以达到我们的目的。
create materialized view log on jd_address;
create materialized view MV_JD_ADDRESS_TEST
refresh fast on commit
as
select * from jd_address;
SELECT * FROM MV_JD_ADDRESS_TEST
建立表的物化视图,在commit时增量刷新物化视图
上文提到向外部发送数据,Oracle8后提供了对于Java的支持,可以通过java调用外部程序,这个方式就很多了,不多介绍
。调用过程如下:触发器》存储过程》java source》外部程序。结合上面提到的物化视图,就可以做到监控增量数据变化,并及时同步到外部程序。
对于Oracle中Java Source使用,一般需要开启授权。我们可以先开启Java Source日志,在命令窗口中执行存储过程可调用java source查看打印信息。若未授权,会打印错误信息,并提供需要授权的语句,拷贝执行即可。
SQL> set serveroutput on;
SQL> exec dbms_java.set_output(5000);
存储过程调用Java Source代码如下:
create or replace procedure prc_test(str varchar2) as language java name 'Demo.entry(java.lang.String)';
参考文档:Oracle CDC提供基于tigger的同步模式和基于流复制的异步模式,也是一个不错的解决方案。
引用
引用
引用
引用
引用
分享到:
相关推荐
NULL 博文链接:https://sheungxin.iteye.com/blog/2359308
较为明了地介绍了oracle CDC 实现的方式,包含实际操作。
详细介绍了Oracle 增量恢复的过程及内部机制 基于各种类型的恢复:SCN 时间点 日志序列号等
以关系数据库为介质,研究了基于Oracle的实时数据获取、处理、存储和访问技术. 重点探讨了实时数据的压缩存储,并给出采用Oracle数据库内部语言PL /SQL实现数据压缩算法,由于数据的存储和访问中引进了数据压缩技术,在...
基于Oracle组件的数据采集与全文检索系统设计与优化.pdf
增量备份:其中包括备份策略及参数的设置,只有尝试才知道结果。
Oracle相同表结构增量数据同步 Oracle强制结束正在运行SQL,死循环时使用
ODI如何通过logminer创新发展从oracle数据库中抽取增量数据.pdf
基于Oracle的大数据量删除操作性能分析.pdf
Oracle数据库系统数据采集讲座 1、审计数据一般运动流程 2、Oracle数据库系统基本概念 3、Oracle数据的采集和恢复 4、Oracle数据的转换和分析
Oracle数据库逻辑增量备份之exp/imp 1 一、实现需求 1 二、逻辑备份恢复工具exp/imp 2 1、逻辑备份原理 2 2、exp语法和参数 2 3、imp语法和参数 3 三、exp逻辑备份 4 1、exp表模式备份 4 2、exp用户模式备份 5 3、...
Oracle增量备份请参照我写的文档,凡是又不会请加我好友
崔华的《基于Oracle的SQL优化》一书配套脚本,纯手打
基于Oracle的SQL优化
本文详细描述了oracle rman增量备份的步骤和方法,对于学习rman增量备份有很大帮助。
ODI如何通过logminer技术从oracle_数据库中抽取增量数据
《基于Oracle的SQL优化》PDF版本下载
Oracle RMAN增量备份恢复测试记录
关于ORACLE中的数据仓库&BI;系统的实例,用于培训之用,用于提升之用。希望对各位有用,实例丰富、实用!
基于Oracle的SQL优化