基于oracle日志挖掘的增量同步方案的设计

2017-07-18 11:47沈一通云南省气象局
数码世界 2017年6期
关键词:数据文件脚本入库

沈一通 云南省气象局

基于oracle日志挖掘的增量同步方案的设计

沈一通 云南省气象局

本文介绍了一种通过oracle日志挖掘对数据进行增量同步的一种方案。其中使用了oracle自带的LogMiner,python脚本语言和sql loader的工具和技术来实现增量同步。由于采用的都是oracle自带工具和脚本,对于不需要同步存储过程和视图的高并发且低复杂度的数据,该方案比流行同步方案优势在于简洁高效不影响实时业务。

增量同步 Oracle LogMiner python sql loader

1 设计目的

对于Oracle数据库同步现在已经有很多方案,常见方案有着以下优缺点:

①通过触发器等方式提取源数据库数据生成脚本到目的数据库执行。其优点在于自行编程,对数据的定制同步比较灵活。缺点是效率低,大量数据同步时有可能影响数据库性能,只适合运用于频率不高的小数据量同步。

②通过Oracle Golden Gate实现数据同步。该方案优点在于Oracle Golden Gate是Oracle官方提供且功能强大。缺点是Oracle Golden Gate属于商业软件成本高,小系统开发不适合。

③使用如SymmetricDS等开源免费的第三方工具同步。优点在于互联网上便于找到技术支持和文档。其缺点在于对于大数据量时臃肿不稳定。

④使用类似kettle+ActiveMQ的中间件方式同步。优点是对于第一种方案的加强可以自由定制且提高效率。缺点是学习成本多需要掌握中间件技术,对于简单同步大材小用。

基于以上流行同步方案,本文旨在设计一种针对应用中大量简单数据的增量同步的轻量化同步方案。本文所设计的方案涉及的工具分别是Oracle自带的LogMiner和sql loader以及脚本语言python。都是常见且对于数据库新手也比较容易上手的工具,且可根据需要同步的数据灵活定制。

2 方案设计

本同步方案可以分为3个部分:源数据库日志挖掘部分、入库信息转接部分、目的库入库部分。

2.1 源数据库日志挖掘

源数据库日志挖掘主要有oracle自带工具LogMiner承担。

LogMiner安装与配置有较全的网络文档,可按文档针对数据库完成创建数据字典,添加分析的日志文件,启动LogMiner导出分析结果三个步骤的循环执行。

例如在windows下的操作(使用DBA权限用户):

2.2 入库信息转接

获得日志分析结果后可由python对日志分析进一步提取和转接向目的数据库。使用ctl文件来导入对于数据库效率影响小,比较适合大量数据导入。

Python脚本承担3个任务分别是:

①针对需要同步的数据生成ctl任务控制文件。

对于增量同步ctl文件中设置需要加载数据文件模板,并将操作模式设为append。

②对日志分析结果生成数据文件。

用脚本执行select sql_redo from v$logmnr_contents where seg_owner='LOGMNR' and table_name='TEST' and operation='INSERT';就可得到增量的数据。

使用python中re模块正则提取需要的入库信息而后按ctl文件中数据模板生成数据文件。

③将ctl文件和数据文件通过ftp方式传到目的数据库。

2.3 目的数据库入库

使用定时脚本或存储过程调用sqlldr工具对目标数据库入库。

如可以在脚本中执行:

sqlldr control='f: est.ctl' data='f: estLoad.txt' test.ctl为上一步生成ctl文件。testLoad.txt为上一步生成的数据文件。

3 应用场景

这个方案适用于基于Oracle的高并发实时生产环境,诸如元数据监控需要同步数据中不需要函数运算的导入和更新删除操作。由于是实时业务而对数据库性能要求较高,一些大量数据的同步方案如通过Oracle审计提取会影响数据库性能,如果采用数据库主从备份方式又过于复杂,而LogMiner工具离线可以跟踪数据库的变化而不影响在线系统的性能。对于数据复杂程度不高但实时数据量比较大的系统可以采用,诸如:气象元数据监控,气象要素实时监控,列出票务数据监控等等。

[1]张立奎,闫子熙.基于LogMiner的Oracle数据库日志分析[J].计算机与网络,2013(03,04):145

[2]王玉标,饶锡如,何盼.异构环境下数据库增量同步更新机制[J].计算机工程与设计,2011(03):948

[3]雷远平.消息机制实现异构数据库的同步更新[J].计算机应用.2008.28(7):1700-1702

[4]盖国强.深入解析Oracle:DBA入门、进阶与诊断案例[M].北京:人民邮电出版社,2009,318-324

[5]徐荣飞.Python正则表达式研究[J].电脑编程技巧与维护,2015(09):49

沈一通,1989—,工作单位:云南省气象局,职称:助工,学历:本科。

猜你喜欢
数据文件脚本入库
酒驾
重磅!广东省“三旧”改造标图入库标准正式发布!
中国食品品牌库入库企业信息公示②
中国食品品牌库入库企业信息公示①
自动推送与网站匹配的脚本
基于表空间和数据文件探讨MIS中数据库架构设计
地面气象观测软件数据质量控制
基于网络环境的社区协同办公问题探讨(二)
身临其境探究竟 主动思考完任务——《仓储与配送实务》入库作业之“入库订单处理”教学案例
愚公移山