首页> 中国专利> 一种oracle数据库增量数据采集实现方法

一种oracle数据库增量数据采集实现方法

摘要

本发明特别涉及一种oracle数据库增量数据采集实现方法。该oracle数据库增量数据采集实现方法,首先开启Oracle数据库的归档日志功能,并保证oracle数据库中的归档日志文件在被采集前不能删除;然后从oracle数据库中提取数据库表的Redo日志进行字段解析,通过分析Redo日志有效跟踪Oracle数据库表的增量变化;若对Redo日志的字段解析出错,则反查源数据库进行容错,从而实现可靠的Oracle数据库增量数据采集。该oracle数据库增量数据采集实现方法,利用归档日志提取Redo日志,并基于词法语法解析转化为结构化数据,解析失败后反查源库进行容错,从而实现了增量数据的可靠快速采集。

著录项

  • 公开/公告号CN112181992A

    专利类型发明专利

  • 公开/公告日2021-01-05

    原文格式PDF

  • 申请/专利权人 浪潮云信息技术股份公司;

    申请/专利号CN202011162881.9

  • 发明设计人 李建伟;肖雪;方建勋;李朝铭;

    申请日2020-10-27

  • 分类号G06F16/22(20190101);G06F16/27(20190101);G06F9/48(20060101);

  • 代理机构37100 济南信达专利事务所有限公司;

  • 代理人郗艳荣

  • 地址 250100 山东省济南市高新区浪潮路1036号浪潮科技园S01号楼

  • 入库时间 2023-06-19 09:27:35

说明书

技术领域

本发明涉及数据库增量数据采集技术领域,特别涉及一种oracle数据库增量数据采集实现方法。

背景技术

随着信息技术的快速发展,各行各业都进入了信息化时代。作为信息的重要组成部分,数据也显得越来越重要。数据的复杂性、设备的不稳定性、人为误操作、各种自然灾害等都容易造成数据的丢失、损坏,因此数据同步和备份显得极为重要。

基于上述情况,本发明提出了一种oracle数据库增量数据采集实现方法。

发明内容

本发明为了弥补现有技术的缺陷,提供了一种简单高效的oracle数据库增量数据采集实现方法。

本发明是通过如下技术方案实现的:

一种oracle数据库增量数据采集实现方法,其特征在于:首先开启Oracle数据库的归档日志功能,并保证oracle数据库中的归档日志文件在被采集前不能删除;然后从oracle数据库中提取数据库表的Redo日志进行字段解析,通过分析Redo日志有效跟踪Oracle数据库表的增量变化;若对Redo日志的字段解析出错,则反查源数据库进行容错,从而实现可靠的Oracle数据库增量数据采集。

若某个数据库表包含不支持提取Redo日志的列,则通过容错处理对源数据库进行反查,将对源库造成一定压力。

基于Oracle数据库归档日志提取Redo日志,再通过使用开源的词法分析工具Lex(Flex)和语法分析工具Yacc(Bison)进行词法语法解析获得结构化数据;若解析失败则通过反查源数据库进行容错,从而实现快速、可靠的Oracle数据库增量数据采集的方法。

利用调度程序维护归档日志列表,并按日志顺序进行调度处理,采用Oracle数据库自带的归档日志提取工具Logminer提取Redo日志。

该oracle数据库增量数据采集实现方法,包括以下步骤:

第一步,调度程序通过视图查询日志文件列表,启动处理日志文件流程;

第二步,Oracle数据库自带的归档日志提取工具Logminer对要处理的日志文件进行提取,返回表名、rowid、增删改类型和Redo日志;

如果数据库表中不可提取Redo日志(数据库表中的列存在如空间数据类型这类不支持提取redo日志的类型),则跳转步骤第五步;

第三步,通过使用开源的词法分析工具Lex和语法分析工具Yacc对Redo日志进行增加、删除和/或修改操作的词法语法解析,提取日志里的字段值;

第四步,字段值检查

如果字段值不是函数类型,则不需要转化处理;

如果字段值是已知内置函数类型表示的值,则进行转化处理,完成该条增量操作信息的采集;

如果字段值是未知函数类型,则跳转第五步;

第五步,容错

根据rowid、表名反查源数据库提取字段信息,完成该条增量操作采集。

所述第四步中,已知内置函数类型包括TO_DATA,TO_TIMESTAMP,HEXTORAW,TO_DSINTERVAL和TO_YMINTERVAL。

所述第五步中,若源数据库不存在相应的字段信息则丢弃该条Redo日志。

所述第五步中,如果反查源数据库时发现源数据库中不存在相应数据,说明相应数据已被删除,发现删除日志后执行一次删除操作即可完成同步增量采集。

本发明的有益效果是:该oracle数据库增量数据采集实现方法,利用归档日志提取Redo日志,并基于词法语法解析转化为结构化数据,解析失败后反查源库进行容错,从而实现了增量数据的可靠快速采集。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

附图1为本发明oracle数据库增量数据采集实现方法示意图。

附图2为本发明oracle数据库增量数据采集实现架构示意图。

具体实施方式

为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

通过归档日志分析,可以获取Oracle数据库的Redo(重做)日志,将获取的Redo日志进行词法语法分析处理,大部分情况下可以获得各个字段的信息。但是由于数据库数据类型多样化,有些类型比如空间数据类型不支持提取Redo日志,另外日志信息里也可能掺杂着各种Oracle数据库内置函数表示的字段信息,给解析带来了一定的复杂性。所以也需要额外的容错机制可以保障解析失败时也可以抽取到正确的增量记录。

为了验证归档日志提取的增加、删除、修改Redo日志是有规则的语法格式,并且可以从归档日志提取表名、rowid、增量操作类型等反查容错需要的信息,表1-表3提供了借助于自研入库端程序,插入、更新和删除操作中对应的Redo日志信息示例,验证了系统的处理效率、处理的准确性等性能指标。

表1-表3中,业务表member,字段id、name、uptime、ctx,类型为number、varchar2(255)、timestamp、blob。

表1插入操作

表2更新操作

表3删除操作

由表1-表3可知,插入、更新或删除业务表操作都会记录到归档日志里,并可以进行提取。然后通过Lex/Yacc进行解析出操作类型以及字段信息。并且可以从日志额外提取出表名、rowid、增量操作码,从而可以在解析出错情况下进行反查,从而保证快速可靠的增量数据采集。

该oracle数据库增量数据采集实现方法,首先开启Oracle数据库的归档日志功能,并保证oracle数据库中的归档日志文件在被采集前不能删除;然后从oracle数据库中提取数据库表的Redo日志进行字段解析,通过分析Redo日志有效跟踪Oracle数据库表的增量变化;若对Redo日志的字段解析出错,则反查源数据库进行容错,从而实现可靠的Oracle数据库增量数据采集。

若某个数据库表包含不支持提取Redo日志的列,则通过容错处理对源数据库进行反查,将对源库造成一定压力。

基于Oracle数据库归档日志提取Redo日志,再通过使用开源的词法分析工具Lex(Flex)和语法分析工具Yacc(Bison)进行词法语法解析获得结构化数据;若解析失败则通过反查源数据库进行容错,从而实现快速、可靠的Oracle数据库增量数据采集的方法。

利用调度程序维护归档日志列表,并按日志顺序进行调度处理,采用Oracle数据库自带的归档日志提取工具Logminer提取Redo日志。

该oracle数据库增量数据采集实现方法,包括以下步骤:

第一步,调度程序通过视图查询日志文件列表,启动处理日志文件流程;

第二步,Oracle数据库自带的归档日志提取工具Logminer对要处理的日志文件进行提取,返回表名、rowid、增删改类型和Redo日志;

如果数据库表中不可提取Redo日志(数据库表中的列存在如空间数据类型这类不支持提取redo日志的类型),则跳转步骤第五步;

第三步,通过使用开源的词法分析工具Lex和语法分析工具Yacc对Redo日志进行增加、删除和/或修改操作的词法语法解析,提取日志里的字段值;

第四步,字段值检查

如果字段值不是函数类型,则不需要转化处理;

如果字段值是已知内置函数类型表示的值,则进行转化处理,完成该条增量操作信息的采集;

如果字段值是未知函数类型,则跳转第五步;

第五步,容错

根据rowid、表名反查源数据库提取字段信息,完成该条增量操作采集。

所述第四步中,已知内置函数类型包括TO_DATA,TO_TIMESTAMP,HEXTORAW,TO_DSINTERVAL和TO_YMINTERVAL。

所述第五步中,若源数据库不存在相应的字段信息则丢弃该条Redo日志。

所述第五步中,如果反查源数据库时发现源数据库中不存在相应数据,说明相应数据已被删除,发现删除日志后执行一次删除操作即可完成同步增量采集。

以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号