log添加 oracle redo_一种基于redolog的Oracle数据实时同步方法与流程

技术领域:

:本发明涉及Oracle数据库

技术领域:

:,具体地说是一种基于redolog的Oracle数据实时同步方法。

背景技术:

::传统的数据同步工具,如Sqoop、Kattle、DataX等,均采用JDBC方式采集数据。JDBC方式简单、易上手,但这些产品都对数据质量有一定要求,无法采集一些数据质量较差的Oracle数据,如存在大量重复数据、缺少主键和索引、所有列都存在空值等情况。技术实现要素:本发明的技术任务是提供一种基于redolog的Oracle数据实时同步方法。本发明的技术任务是按以下方式实现的:一种基于redolog的Oracle数据实时同步方法,该方法是基于Oracle的redolog文件,并轮询redolog,通过redolog分析轮训内数据库的操作,实现数据同步,并将数据在其他存储系统完成同步操作。该方法的操作步骤如下:步骤1)首先查看Oracle数据库当前的日志组状况,查看日志组数目、大小及存储路径,以满足功能和性能需求为目的调整Oracleredolog日志大小及分组;步骤2)基于redolog实时同步Oracle数据,定时轮询redolog,通过日志分析本次轮询内数据库增加、删除、修改操作,实现数据同步;步骤3)根据轮询结果,将数据在其他存储系统完成同步操作。所述的步骤1)中通过SQL所示查看所述的日志组数目、大小及存储路径,包括:若默认redolog较小,创建新的redolog组,通过SQL创建n个新redolog组,每个redolog组大小为m。所述的创建新的redolog组后,通过SQL查询所有redolog组状态。通过所述的SQL切换redolog,将redolog组1,2,3状态变为INACTIVE。所述的切换redolog完成后,重新查询redolog组状态,当redolog组1,2,3为INACTIVE时,将原有较小的redolog组1,2,3删除。所述的步骤2)中定时轮询redolog进行n次,第一次轮询时间点为当前系统时间t_1,第n次轮询时系统时间为t_n。所述的第n次轮询操作步骤如下:1)查询本次轮询需要查询的redolog文件路径;2)构造分析脚本,将所有分析的redolog加入到所述的分析脚本中;3)开始日志挖掘;4)查询数据变化。所述的查询数据变化,包括:查询Oracle用户USER的表名称为tName的表数据变化,可查询INSERT、UPDATE和DELETE全部操作或只查询其中一部分操作。所述的步骤3)中,若查询到数据库有一条DELETE操作及具体删除的数据内容,在同步的HBase数据库中删除对应的一条数据,采用流式框架自动完成数据同步作业。本发明的一种基于redolog的Oracle数据实时同步方法和现有技术相比,该方法基于Oracle自身的redolog文件,对Oracle无侵入性,该方法技术简单易于实现,对数据质量无要求,具有广泛的适用场景,能够实现数据实时同步功能,支持数据增加、删除、修改等操作,软件开发人员可快速实现Oracle数据实时同步功能。具体实施方式实施例1:一种基于redolog的Oracle数据实时同步方法,该方法是基于Oracle的redolog文件,并轮询redolog,通过redolog分析轮训内数据库的操作,实现数据同步,并将数据在其他存储系统完成同步操作。该方法的操作步骤如下:步骤1)首先查看Oracle数据库当前的日志组状况,通过SQL所示查看日志组数目、大小及存储路径,以满足功能和性能需求为目的调整Oracleredolog日志大小及分组;SQL>selectgroup#,bytes,statusfromv$log;GROUP#BYTESSTATUS------------------------------------1524288000INACTIVE2524288000CURRENT3524288000INACTIVESQL>selectgroup#,memberfromv$logfile;GROUP#MEMBER--------------------------------------------------1/opt/oracle/oradata/test/redo01.log2/opt/oracle/oradata/test/redo02.log3/opt/oracle/oradata/test/redo03.log若默认redolog较小,创建新的redolog组,通过SQL创建n个新redolog组,每个redolog组大小为m;SQL>alterdatabaseaddlogfilegroup4'/opt/oracle/oradata/test/redo04.log'sizem;SQL>alterdatabaseaddlogfilegroup4'/opt/oracle/oradata/test/redo04.log'sizem;…SQL>alterdatabaseaddlogfilegroupn+3'/opt/oracle/oradata/test/redo(n+3).log'sizem;所述的创建新的redolog组后,通过SQL查询所有redolog组状态。SQL>selectgroup#,statusfromv$log;GROUP#STATUS-------------------------1INACTIVE2CURRENT3INACTIVE4UNUSED5UNUSED…通过所述的SQL切换redolog,将redolog组1,2,3状态变为INACTIVE。SQL>altersystemswitchlogfile;SQL>altersystemcheckpoint;所述的切换redolog完成后,重新查询redolog组状态,当redolog组1,2,3为INACTIVE时,将原有较小的redolog组1,2,3删除。SQL>selectgroup#,statusfromv$log;GROUP#STATUS--------------1INACTIVE2INACTIVE3INACTIVE4INACTIVE5CURRENT…SQL>alterdatabasedroplogfilegroup1;Databasealtered.SQL>alterdatabasedroplogfilegroup2;Databasealtered.SQL>alterdatabasedroplogfilegroup3;Databasealtered.步骤2)基于redolog实时同步Oracle数据,定时轮询redolog,通过日志分析本次轮询内数据库增加、删除、修改操作,实现数据同步;所述的定时轮询redolog进行n次,第一次轮询时间点为当前系统时间t_1,第n次轮询时系统时间为t_n,所述的第n次轮询操作步骤如下:1)查询本次轮询需要查询的redolog文件路径;selectmemberfromv$logfilefinnerjoinv$loglonf.GROUP#=l.GROUP#whereCOMPLETION_TIME>=to_date('startTime',t_n-1)andCOMPLETION_TIME<to_date('startTime',t_n)orl.ARCHIVED<>'YES';2)构造分析脚本,将所有分析的redolog加入到所述的分析脚本中;executedbms_logmnr.add_logfile(logfilename=>'redolog文件路径',options=>dbms_logmnr.NEW);…3)开始日志挖掘;executeDBMS_LOGMNR.START_LOGMNR(OPTIONS=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.COMMITTED_DATA_ONLY);4)查询数据变化:查询Oracle用户USER的表名称为tName的表数据变化,可查询INSERT、UPDATE和DELETE全部操作或只查询其中一部分操作。select/*+Parallel(4)*/count(*)fromv$logmnr_contentswhereseg_owner='USER'andtable_name='tName'and(operation='INSERT'oroperation='UPDATE'oroperation='DELETE')andCOMMIT_TIMESTAMP>=to_date('startTime',t_n-1)andCOMMIT_TIMESTAMP<to_date('currentTime',t_n)步骤3)根据轮询结果,将数据在其他存储系统完成同步操作;若查询到数据库有一条DELETE操作及具体删除的数据内容,在同步的HBase数据库中删除对应的一条数据,采用流式框架自动完成数据同步作业。通过上面具体实施方式,所述

技术领域:

:的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述

技术领域:

:的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。当前第1页1&nbsp2&nbsp3&nbsp当前第1页1&nbsp2&nbsp3&nbsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值