基于大数据的增量抽取的方法转让专利

申请号 : CN201610701372.6

文献号 : CN106126753B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴梁斌庄国强陈坤龙梁丽琴

申请人 : 易联众信息技术股份有限公司

摘要 :

本发明一种基于大数据的增量抽取的方法,通过可视化的logminer工具来解析源库的归档日志文件,将源库的归档日志文件解析后的增量数据收集到中间表中,中间表以上一次增量抽取的SCN值为条件查询,并在目标库中执行解析出来的语句,实现增量抽取,由于本发明读取的是源库的归档日志,对数据库的影响很小;本发明使用集成三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,通过调度监控系统自动按时完成数据的增量抽取,本发明还可以面向多个数据源,统一收集增量数据到中间表中,再通过中间表向各自对应的目标库执行转移增量数据的动作,具有可视、效率高和对数据库几乎没有影响的特点。

权利要求 :

1.一种基于大数据的增量抽取的方法,其特征在于包括如下步骤:

步骤1、数据库增量抽取前的准备工作

步骤11、在源库中建立一个用户,并授予该用户create session、execute on dbms_logmnr、execute on dbms_flashback、select on v_$logmnr_contents、select on v_$log、select on v_$logfile、select v_$archived_log、select any transaction的权限;

步骤12、源库开启归档模式;

步骤13、查询SCN值;

步骤2、基于数据库增量抽取的实现步骤,设计三个转换插件,分别是将源库表数据初始化到目标库的转换插件、将源库的增量数据抽取到中间表的转换插件和将中间表的增量数据抽取到目标库的转换插件,具体包括如下步骤:步骤21、所述的源库表数据初始化到目标库的转换插件,主要用于全量抽取,进行目标库的初始化,每调用一次就会把原来的目标库表删除,初始化目标库:首先,进行源库连接、目标库连接、源库表和目标库表的映射关系、目标库表名匹配格式的参数配置;

然后,根据配置初始化源库连接和目标库连接,创建中间表的数据库DBLINK,然后通过配置的源表和目标表的映射关系,在目标库建目标库表,如果已存在目标库表,则会删除该目标库表,重新建表;

最后,将源库表的数据初始化到目标库表中;

步骤22、所述将源库的增量数据抽取到中间表的转换插件,通过LogMiner工具解析源库的归档日志,解析的条件为大于全量抽取时查询的SCN值,也就是步骤13抽取前准备工作中查询的SCN值,将中间表中最大的SCN值作为增量抽取的条件,加载并解析归档日志,将清洗、过滤后的解析归档日志放到中间表中,该转换插件必须在目标库初始化完成后才能调用:首先,进行源库相关的归档文件解析连接、每批次解析归档数、抽取前准备工作中查询的SCN值、归档路径ID和中间表所在的数据库连接、中间表表名、事务提交数量的参数配置;

然后,根据配置初始化源库连接和中间表所在数据库连接,判断中间表是否存在,不存在则创建中间表,并初始化SCN值,即在中间表中添加记录行,将中间表中的最大SCN值为初始的SCN值,读取归档日志表v$archived_log记录大于中间表最大SCN值的记录,归档日志表v$archived_log中NAME字段表示的是文件路径;

最后,在LogMiner工具中加入需要解析的归档日志文件,并启动LogMiner工具进行分析,根据SCN值查询解析出的数据,查询出OPREATION_CODE字段值为1,2,3,6,7,36的数据,并将这些数据添加到中间表中,执行结束之后关闭Logminer工具,所述OPREATION_CODE字段值为1表示INSERT,2表示DELETE,3表示UPDATE,6表示START,7表示COMMIT,36表示ROLLBACK;

步骤23、所述将中间表的增量数据抽取到目标库的转换插件,在目标库中建立一个MAXSCN表,每次往目标库表中添加一个记录成功时,就会更新MAXSCN表中的SCN值,目标库通过MAXSCN表中记录的最大的SCN值为条件,每次抽取大于该SCN值的记录,将中间表中解析完的SQL语句在目标库中按配置的事务提交数量为最小单元执行,实现增量抽取:首先,进行中间表所在数据库连接、中间表表名、是否删除无用数据参数,和目标库连接、初始化SCN值、事务提交数量,源库模式名、表名与目标库模式名、表名的映射关系的配置;

然后,根据配置初始化中间表所在数据库连接和目标库连接,在目标库中创建MAXSCN表,用于记录提交成到MAXSCN表中的SCN值,该MAXSCN表包含两个字段:CSCN和FLOWID,分别是SCN值和抽取标识,通过查询CSCN字段的最大值作为数据增量抽取的条件;

初始化源库模式名、表名与目标库模式名、表名的映射关系;

最后,若设置调度的时间到了,查询中间表中大于MAXSCN表中的最大SCN值的SCN值,并且符合映射配置中的模式名和表名,解析中间表的记录,将中间表的归档日志的SQL语句解析为目标库中可以执行的SQL语句,提交的数据按配置的事务提交数量为最小单元进行组合,一次执行SQL语句的数量以配置的事务提交数量为一个事务,同时更新MAXSCN表中的CSCN字段的值为当前的SCN值,实现增量数据抽取;

步骤3、将上述三个转换插件添加到kettle工具中,使用集成有这三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,设计好作业之后,通过调度监控系统来配置作业的调度策略;

步骤4、调度监控系统按配置好的调度策略,定时去源库中查询增量的归档日志,通过中间表中最大SCN值作为是否产生增量抽取的标识,自动按时完成数据的增量抽取。

说明书 :

基于大数据的增量抽取的方法

技术领域

[0001] 本发明涉及一种基于大数据的增量抽取的方法。

背景技术

[0002] 随着数据信息对企业决策和政府制定政策越发显得重要,分散在各地的数据孤岛就需要集中于一个数据集市中,便于数据的分析和统计。Oracle数据的逐渐增多,如若想把这些数据集中到一起就需要一个合适的技术去实现。但是现有的解决方案中会存在不易用、效率低和对数据库影响大等缺点,在这用情况下,基于大数据的增量抽取及调度监控系统就可以很好的解决这些问题。

发明内容

[0003] 本发明的目的在于提供一种基于大数据的增量抽取的方法,用于自动增量抽取业务系统的数据,并且具有可视、效率高和对数据库几乎没有影响的特点。
[0004] 本发明一种基于大数据的增量抽取的方法,包括如下步骤:
[0005] 步骤1、数据库增量抽取前的准备工作
[0006] 步骤11、在源库中建立一个用户,并授予该用户create session、execute on dbms_logmnr、execute on dbms_flashback、select on v_$logmnr_contents、select on v_$log、select on v_$logfile、select v_$archived_log、select any transaction的权限;
[0007] 步骤12、源库开启归档模式;
[0008] 步骤13、查询SCN值;
[0009] 步骤2、基于数据库增量抽取的实现步骤,设计三个转换插件,分别是将源库表数据初始化到目标库的转换插件、将源库的增量数据抽取到中间表的转换插件和将中间表的增量数据抽取到目标库的转换插件,具体包括如下步骤:
[0010] 步骤21、所述的源库表数据初始化到目标库的转换插件,主要用于全量抽取,进行目标库的初始化,每调用一次就会把原来的目标库表删除,初始化目标库:
[0011] 首先,进行源库连接、目标库连接、源库表和目标库表的映射关系、目标库表名匹配格式的参数配置;
[0012] 然后,根据配置初始化源库连接和目标库连接,创建中间表的数据库DBLINK,然后通过配置的源表和目标表的映射关系,在目标库建目标库表,如果已存在目标库表,则会删除该目标库表,重新建表;
[0013] 最后,将源库表的数据初始化到目标库表中;
[0014] 步骤22、所述将源库的增量数据抽取到中间表的转换插件,通过LogMiner工具解析源库的归档日志,解析的条件为大于全量抽取时查询的SCN值,也就是步骤13抽取前准备工作中查询的SCN值,将中间表中最大的SCN值作为增量抽取的条件,加载并解析归档日志,将清洗、过滤后的解析归档日志放到中间表中,该转换插件必须在目标库初始化完成后才能调用:
[0015] 首先,进行源库相关的归档文件解析连接、每批次解析归档数、抽取前准备工作中查询的SCN值、归档路径ID和中间表所在的数据库连接、中间表表名、事务提交数量的参数配置;
[0016] 然后,根据配置初始化源库连接和中间表所在数据库连接,判断中间表是否存在,不存在则创建中间表,并初始化SCN值,即在中间表中添加记录行,将中间表中的最大SCN值为初始的SCN值,读取归档日志表v$archived_log记录大于中间表最大SCN值的记录,归档日志表v$archived_log中NAME字段表示的是文件路径;
[0017] 最后,在LogMiner工具中加入需要解析的归档日志文件,并启动LogMiner工具进行分析,根据SCN值查询解析出的数据,查询出PREATION_CODE字段值为1,2,3,6,7,36的数据,并将这些数据添加到中间表中,执行结束之后关闭Logminer工具,所述OPREATION_CODE字段值为1表示INSERT,2表示DELETE,3表示UPDATE,6表示START,7表示COMMIT,36表示ROLLBACK;
[0018] 步骤23、所述将中间表的增量数据抽取到目标库的转换插件,在目标库中建立一个MAXSCN表,每次往目标库表中添加一个记录成功时,就会更新MAXSCN表中的SCN值,目标库通过MAXSCN表中记录的最大的SCN值为条件,每次抽取大于该SCN值的记录,将中间表中解析完的SQL语句在目标库中按配置的事务提交数量为最小单元执行,实现增量抽取:
[0019] 首先,进行中间表所在数据库连接、中间表表名、是否删除无用数据参数,和目标库连接、初始化SCN值、事务提交数量,源库模式名、表名与目标库模式名、表名的映射关系的配置;
[0020] 然后,根据配置初始化中间表所在数据库连接和目标库连接,在目标库中创建MAXSCN表,用于记录提交成到MAXSCN表中的SCN值,该MAXSCN表包含两个字段:CSCN和FLOWID,分别是SCN值和抽取标识,通过查询CSCN字段的最大值作为数据增量抽取的条件;
[0021] 初始化源库模式名、表名与目标库模式名、表名的映射关系;
[0022] 最后,若设置调度的时间到了,查询中间表中大于MAXSCN表中的最大SCN值的SCN值,并且符合映射配置中的模式名和表名,解析中间表的记录,将中间表的归档日志的SQL语句解析为目标库中可以执行的SQL语句,提交的数据按配置的事务提交数量为最小单元进行组合,一次执行SQL语句的数量以配置的事务提交数量为一个事务,同时更新MAXSCN表中的CSCN字段的值为当前的SCN值,实现增量数据抽取;
[0023] 步骤3、将上述三个转换插件添加到kettle工具中,使用集成有这三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,设计好作业之后,通过调度监控系统来配置作业的调度策略;
[0024] 步骤4、调度监控系统按配置好的调度策略,定时去源库中查询增量的归档日志,通过中间表中最大SCN值作为是否产生增量抽取的标识,自动按时完成数据的增量抽取。
[0025] 本发明的基于大数据的增量抽取,主要是通过可视化的logminer工具来解析源库的归档日志文件,然后将源库的归档日志文件解析后的增量数据收集到中间表中,中间表起到了缓存、过滤的作用,中间表以上一次增量抽取的SCN值为条件查询,并在目标库中执行解析出来的语句,实现增量抽取。由于本发明在数据增量抽取的过程中读取的是源库的归档日志,不会对数据库服务器造成压力,并且对数据库的影响很小;本发明基于数据库增量抽取的实现步骤,设计三个转换插件,使用集成有这三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,通过调度监控系统来配置作业的调度策略,自动按时完成数据的增量抽取,因此,本发明还可以面向多个数据源,统一收集增量数据到中间表中,再通过中间表向各自对应的目标库执行转移增量数据的动作,具有可视、效率高和对数据库几乎没有影响的特点。

附图说明

[0026] 图1为本发明的系统框架图。
[0027] 下面结合附图和具体实施例对本发明作进一步详述。

具体实施方式

[0028] 如图1所示,本发明一种基于大数据的增量抽取的方法,主要包括如下步骤:
[0029] 步骤1、数据库增量抽取前的准备工作
[0030] 步骤11、在源库中建立一个用户,并授予该用户create session、execute on dbms_logmnr、execute on dbms_flashback、select on v_$logmnr_contents、select on v_$log、select on v_$logfile、select v_$archived_log、select any transaction的权限;
[0031] 步骤12、源库开启归档模式;
[0032] 步骤13、查询SCN值;
[0033] 步骤2、基于数据库增量抽取的实现步骤,设计三个转换插件,分别是将源库表数据初始化到目标库的转换插件、将源库的增量数据抽取到中间表的转换插件和将中间表的增量数据抽取到目标库的转换插件,具体包括如下步骤:
[0034] 步骤21、所述的源库表数据初始化到目标库的转换插件,主要用于全量抽取,进行目标库的初始化,每调用一次就会把原来的目标库表删除,初始化目标库:
[0035] 首先,进行源库连接、目标库连接、源库表和目标库表的映射关系、目标库表名匹配格式的参数配置;
[0036] 然后,根据配置初始化源库连接和目标库连接,创建中间表的数据库DBLINK,然后通过配置的源表和目标表的映射关系,在目标库建目标库表,如果已存在目标库表,则会删除该目标库表,重新建表;
[0037] 最后,将源库表的数据初始化到目标库表中;
[0038] 步骤22、所述将源库的增量数据抽取到中间表的转换插件,通过LogMiner工具解析源库的归档日志,解析的条件为大于全量抽取时查询的SCN值,也就是步骤13抽取前准备工作中查询的SCN值,将中间表中最大的SCN值作为增量抽取的条件,加载并解析归档日志,将清洗、过滤后的解析归档日志放到中间表中,该转换插件必须在目标库初始化完成后才能调用:
[0039] 首先,进行源库相关的归档文件解析连接、每批次解析归档数、抽取前准备工作中查询的SCN值、归档路径ID和中间表所在的数据库连接、中间表表名、事务提交数量的参数配置;
[0040] 然后,根据配置初始化源库连接和中间表所在数据库连接,判断中间表是否存在,不存在则创建中间表,并初始化SCN值,即在中间表中添加记录行,将中间表中的最大SCN值为初始的SCN值,读取归档日志表v$archived_log记录大于中间表最大SCN值的记录,归档日志表v$archived_log中NAME字段表示的是文件路径;
[0041] 最后,在LogMiner工具中加入需要解析的归档日志文件,并启动LogMiner工具进行分析,根据SCN值查询解析出的数据,查询出PREATION_CODE字段值为1,2,3,6,7,36的数据,并将这些数据添加到中间表中,执行结束之后关闭Logminer工具,所述OPREATION_CODE字段值为1表示INSERT,2表示DELETE,3表示UPDATE,6表示START,7表示COMMIT,36表示ROLLBACK;
[0042] 步骤23、所述将中间表的增量数据抽取到目标库的转换插件,在目标库中建立一个MAXSCN表,每次往目标库表中添加一个记录成功时,就会更新MAXSCN表中的SCN值,目标库通过MAXSCN表中记录的最大的SCN值为条件,每次抽取大于该SCN值的记录,将中间表中解析完的SQL语句在目标库中按配置的事务提交数量为最小单元执行,实现增量抽取:
[0043] 首先,进行中间表所在数据库连接、中间表表名、是否删除无用数据参数,和目标库连接、初始化SCN值、事务提交数量,源库模式名、表名与目标库模式名、表名的映射关系的配置;
[0044] 然后,根据配置初始化中间表所在数据库连接和目标库连接,在目标库中创建MAXSCN表,用于记录提交成到MAXSCN表中的SCN值,该MAXSCN表包含两个字段:CSCN和FLOWID,分别是SCN值和抽取标识(自定义、唯一),通过查询CSCN字段的最大值作为数据增量抽取的条件;
[0045] 初始化源库模式名、表名与目标库模式名、表名的映射关系;
[0046] 最后,若设置调度的时间到了,查询中间表中大于MAXSCN表中的最大SCN值的SCN值,并且符合映射配置中的模式名和表名,解析中间表的记录,将中间表的归档日志的SQL语句解析为目标库中可以执行的SQL语句,提交的数据按配置的事务提交数量为最小单元进行组合,一次执行SQL语句的数量以配置的事务提交数量为一个事务,同时更新MAXSCN表中的CSCN字段的值为当前的SCN值,实现增量数据抽取;
[0047] 步骤3、将上述三个转换插件添加到kettle工具中,使用集成有这三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,设计好作业之后,通过调度监控系统来配置作业的调度策略;
[0048] 步骤4、调度监控系统按配置好的调度策略,定时去源库中查询增量的归档日志,通过中间表中最大SCN值作为是否产生增量抽取的标识,自动按时完成数据的增量抽取,该调度监控系统还提供了实时监控调度和查看调度日志的功能,可以通过这些功能查看每次调度的具体执行情况。
[0049] 本发明的重点在于:通过可视化的logminer工具来解析源库的归档日志文件,然后将源库的归档日志文件解析后的增量数据收集到中间表中,中间表起到了缓存、过滤的作用,中间表以上一次增量抽取的SCN值为条件查询,并在目标库中执行解析出来的语句,实现增量抽取。由于本发明在数据增量抽取的过程中读取的是源库的归档日志,不会对数据库服务器造成压力,并且对数据库的影响很小;本发明基于数据库增量抽取的实现步骤,设计三个转换插件,使用集成有这三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,通过调度监控系统来配置作业的调度策略,自动按时完成数据的增量抽取,因此,本发明还可以面向多个数据源,统一收集增量数据到中间表中,再通过中间表向各自对应的目标库执行转移增量数据的动作,具有可视、效率高和对数据库几乎没有影响的特点。
[0050] 以上所述,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。