CN112181992A - 一种oracle数据库增量数据采集实现方法 - Google Patents
一种oracle数据库增量数据采集实现方法 Download PDFInfo
- Publication number
- CN112181992A CN112181992A CN202011162881.9A CN202011162881A CN112181992A CN 112181992 A CN112181992 A CN 112181992A CN 202011162881 A CN202011162881 A CN 202011162881A CN 112181992 A CN112181992 A CN 112181992A
- Authority
- CN
- China
- Prior art keywords
- log
- oracle database
- database
- incremental data
- data acquisition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 15
- 238000000605 extraction Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000007792 addition Methods 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 241000283726 Bison Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明特别涉及一种oracle数据库增量数据采集实现方法。该oracle数据库增量数据采集实现方法,首先开启Oracle数据库的归档日志功能,并保证oracle数据库中的归档日志文件在被采集前不能删除;然后从oracle数据库中提取数据库表的Redo日志进行字段解析,通过分析Redo日志有效跟踪Oracle数据库表的增量变化;若对Redo日志的字段解析出错,则反查源数据库进行容错,从而实现可靠的Oracle数据库增量数据采集。该oracle数据库增量数据采集实现方法,利用归档日志提取Redo日志,并基于词法语法解析转化为结构化数据,解析失败后反查源库进行容错,从而实现了增量数据的可靠快速采集。
Description
技术领域
本发明涉及数据库增量数据采集技术领域,特别涉及一种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日志。
所述第五步中,如果反查源数据库时发现源数据库中不存在相应数据,说明相应数据已被删除,发现删除日志后执行一次删除操作即可完成同步增量采集。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种oracle数据库增量数据采集实现方法,其特征在于:首先开启Oracle数据库的归档日志功能,并保证oracle数据库中的归档日志文件在被采集前不能删除;然后从oracle数据库中提取数据库表的Redo日志进行字段解析,通过分析Redo日志有效跟踪Oracle数据库表的增量变化;若对Redo日志的字段解析出错,则反查源数据库进行容错,从而实现可靠的Oracle数据库增量数据采集。
2.根据权利要求1所述的oracle数据库增量数据采集实现方法,其特征在于:若某个数据库表包含不支持提取Redo日志的列,则通过容错处理对源数据库进行反查。
3.根据权利要求1所述的oracle数据库增量数据采集实现方法,其特征在于:基于Oracle数据库归档日志提取Redo日志,再通过使用开源的词法分析工具Lex和语法分析工具Yacc进行词法语法解析获得结构化数据;若解析失败则通过反查源数据库进行容错,从而实现快速、可靠的Oracle数据库增量数据采集的方法。
4.根据权利要求3所述的oracle数据库增量数据采集实现方法,其特征在于:利用调度程序维护归档日志列表,并按日志顺序进行调度处理,采用Oracle数据库自带的归档日志提取工具Logminer提取Redo日志。
5.根据权利要求1、2、3或4所述的oracle数据库增量数据采集实现方法,其特征在于,包括以下步骤:
第一步,调度程序通过视图查询日志文件列表,启动处理日志文件流程;
第二步,Oracle数据库自带的归档日志提取工具Logminer对要处理的日志文件进行提取,返回表名、rowid、增删改类型和Redo日志;
如果数据库表中不可提取Redo日志,则跳转步骤第五步;
第三步,通过使用开源的词法分析工具Lex和语法分析工具Yacc对Redo日志进行增加、删除和/或修改操作的词法语法解析,提取日志里的字段值;
第四步,字段值检查
如果字段值不是函数类型,则不需要转化处理;
如果字段值是已知内置函数类型表示的值,则进行转化处理,完成该条增量操作信息的采集;
如果字段值是未知函数类型,则跳转第五步;
第五步,容错
根据rowid、表名反查源数据库提取字段信息,完成该条增量操作采集。
6.根据权利要求5所述的oracle数据库增量数据采集实现方法,其特征在于:所述第四步中,已知内置函数类型包括TO_DATA,TO_TIMESTAMP,HEXTORAW,TO_DSINTERVAL,TO_YMINTERVAL以及用户逐步添加的处理函数。
7.根据权利要求5所述的oracle数据库增量数据采集实现方法,其特征在于:所述第五步中,若源数据库不存在则丢弃该条Redo日志。
8.根据权利要求7所述的oracle数据库增量数据采集实现方法,其特征在于:如果反查源数据库时发现源数据库中不存在相应数据,说明相应数据已被删除,发现删除日志后执行一次删除操作即可完成同步增量采集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011162881.9A CN112181992A (zh) | 2020-10-27 | 2020-10-27 | 一种oracle数据库增量数据采集实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011162881.9A CN112181992A (zh) | 2020-10-27 | 2020-10-27 | 一种oracle数据库增量数据采集实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181992A true CN112181992A (zh) | 2021-01-05 |
Family
ID=73922266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011162881.9A Pending CN112181992A (zh) | 2020-10-27 | 2020-10-27 | 一种oracle数据库增量数据采集实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181992A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360505A (zh) * | 2021-07-02 | 2021-09-07 | 招商局金融科技有限公司 | 基于时序数据的数据处理方法、装置、电子设备及可读存储介质 |
CN113961546A (zh) * | 2021-10-27 | 2022-01-21 | 国网江苏省电力有限公司营销服务中心 | 一种支持在线分析统计的实时查询库设计方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069142A (zh) * | 2015-08-18 | 2015-11-18 | 山大地纬软件股份有限公司 | 数据增量抽取转换与分发系统及方法 |
CN105279045A (zh) * | 2015-10-28 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据库的数据恢复方法及系统 |
CN105320769A (zh) * | 2015-10-28 | 2016-02-10 | 浪潮(北京)电子信息产业有限公司 | 一种Oracle数据库的数据同步方法及系统 |
CN106126753A (zh) * | 2016-08-23 | 2016-11-16 | 易联众信息技术股份有限公司 | 基于大数据的增量抽取的方法 |
CN109344138A (zh) * | 2018-10-09 | 2019-02-15 | 广东网安科技有限公司 | 一种日志解析方法及系统 |
CN110704242A (zh) * | 2019-09-24 | 2020-01-17 | 上海爱数信息技术股份有限公司 | 一种基于Oracle日志捕获的连续数据保护系统及方法 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
CN111427898A (zh) * | 2020-03-16 | 2020-07-17 | 上海爱数信息技术股份有限公司 | 一种基于解析Oracle日志的持续数据保护系统及方法 |
-
2020
- 2020-10-27 CN CN202011162881.9A patent/CN112181992A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069142A (zh) * | 2015-08-18 | 2015-11-18 | 山大地纬软件股份有限公司 | 数据增量抽取转换与分发系统及方法 |
CN105279045A (zh) * | 2015-10-28 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据库的数据恢复方法及系统 |
CN105320769A (zh) * | 2015-10-28 | 2016-02-10 | 浪潮(北京)电子信息产业有限公司 | 一种Oracle数据库的数据同步方法及系统 |
CN106126753A (zh) * | 2016-08-23 | 2016-11-16 | 易联众信息技术股份有限公司 | 基于大数据的增量抽取的方法 |
CN109344138A (zh) * | 2018-10-09 | 2019-02-15 | 广东网安科技有限公司 | 一种日志解析方法及系统 |
CN110704242A (zh) * | 2019-09-24 | 2020-01-17 | 上海爱数信息技术股份有限公司 | 一种基于Oracle日志捕获的连续数据保护系统及方法 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
CN111427898A (zh) * | 2020-03-16 | 2020-07-17 | 上海爱数信息技术股份有限公司 | 一种基于解析Oracle日志的持续数据保护系统及方法 |
Non-Patent Citations (1)
Title |
---|
彭远浩,潘久辉: "基于日志分析的增量数据捕获方法研究", 《计算机工程》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360505A (zh) * | 2021-07-02 | 2021-09-07 | 招商局金融科技有限公司 | 基于时序数据的数据处理方法、装置、电子设备及可读存储介质 |
CN113360505B (zh) * | 2021-07-02 | 2023-09-26 | 招商局金融科技有限公司 | 基于时序数据的数据处理方法、装置、电子设备及可读存储介质 |
CN113961546A (zh) * | 2021-10-27 | 2022-01-21 | 国网江苏省电力有限公司营销服务中心 | 一种支持在线分析统计的实时查询库设计方法 |
CN113961546B (zh) * | 2021-10-27 | 2024-03-22 | 国网江苏省电力有限公司营销服务中心 | 一种支持在线分析统计的实时查询库设计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656934B (zh) | 基于日志解析的源端Oracle数据库DDL同步方法及设备 | |
CN110879813B (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
CN102831052B (zh) | 测试用例自动化生成装置及方法 | |
CN106919612B (zh) | 一种上线结构化查询语言脚本的处理方法及装置 | |
CN110795287B (zh) | 数据恢复方法、系统、电子设备及计算机存储介质 | |
CN113448935B (zh) | 用于提供日志信息的方法、电子设备和计算机程序产品 | |
CN109254907B (zh) | 一种基于Java的接口测试报告生成方法及系统 | |
CN112181992A (zh) | 一种oracle数据库增量数据采集实现方法 | |
US6708185B2 (en) | SQL execution analysis | |
CN110958292A (zh) | 文件上传方法、电子装置、计算机设备及存储介质 | |
CN112328631A (zh) | 一种生产故障分析方法、装置、电子设备及存储介质 | |
CN105224527A (zh) | 适用于多种目的表更新方式的通用etl方法 | |
CN111767346B (zh) | 一种数据库的数据同步方法、装置、设备及存储介质 | |
CN112068981B (zh) | Linux操作系统中基于知识库的故障扫描恢复方法及系统 | |
CN108108478B (zh) | 数据格式转换方法、系统及电子设备 | |
CN112685230B (zh) | 一种分布式数据库实现指定时间点备份还原的方法 | |
CN111400390B (zh) | 数据处理方法及装置 | |
CN115292284A (zh) | 一种Oracle向OpenGauss数据库DML操作增量迁移同步的系统和方法 | |
CN108228592B (zh) | 基于二进制日志的数据归档方法及数据归档装置 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
CN115168347A (zh) | 一种多数据库间快速同步及异常回滚合并数据的方法 | |
CN110674151A (zh) | 一种支持MySQL快速回滚数据的方法 | |
CN113037521A (zh) | 识别通讯设备状态的方法、通讯系统及存储介质 | |
CN111241191A (zh) | 一种数据库的同步方法及装置 | |
CN111258814B (zh) | 一种数据库备份容错方法、系统、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210105 |
|
RJ01 | Rejection of invention patent application after publication |