发明名称 基于大数据的增量抽取的方法
摘要 本发明一种基于大数据的增量抽取的方法,通过可视化的logminer工具来解析源库的归档日志文件,将源库的归档日志文件解析后的增量数据收集到中间表中,中间表以上一次增量抽取的SCN值为条件查询,并在目标库中执行解析出来的语句,实现增量抽取,由于本发明读取的是源库的归档日志,对数据库的影响很小;本发明使用集成三个转换插件的kettle工具来设计数据库增量抽取的实现步骤的作业,通过调度监控系统自动按时完成数据的增量抽取,本发明还可以面向多个数据源,统一收集增量数据到中间表中,再通过中间表向各自对应的目标库执行转移增量数据的动作,具有可视、效率高和对数据库几乎没有影响的特点。
申请公布号 CN106126753A 申请公布日期 2016.11.16
申请号 CN201610701372.6 申请日期 2016.08.23
申请人 易联众信息技术股份有限公司 发明人 庄国强;梁丽琴
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 厦门市新华专利商标代理有限公司 35203 代理人 朱凌
主权项 一种基于大数据的增量抽取的方法,其特征在于包括如下步骤:步骤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值查询解析出的数据,查询出PREATION_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值作为是否产生增量抽取的标识,自动按时完成数据的增量抽取。
地址 361021 福建省厦门市软件园二期观日路18号502