一种基于日志的结构化数据同步方法

文档序号:6507402阅读:218来源:国知局
一种基于日志的结构化数据同步方法
【专利摘要】本发明公开了一种基于日志的结构化数据同步方法,包括如下步骤:如下步骤:a)创建中间表,用于存放存疑表的主键以及存疑字段;b)修改数据库同步设置,加入存疑表到中间表的同步策略;c)修改数据库同步设置策略,在存疑表到存疑表的同步中加入过滤条件以及存储过程;d)在存疑表上创建触发器并设置触发日期,用于中间表的清理以及非法日期格式数据的录入。本发明提供的基于日志的结构化数据同步方法,能够避开数据库的校验机制实现数据同步,保持源库和目标库之间对应记录的数据一致性,避免因数据类型报错而引发的同步异常。
【专利说明】一种基于日志的结构化数据同步方法
【技术领域】
[0001]本发明涉及一种数据同步方法,尤其涉及一种基于日志的结构化数据同步方法。【背景技术】
[0002]Oracle GoldenGate软件是一种基于log(日志)的结构化数据复制软件,它通过解析源数据库在线log或归档log获得数据的增、删、改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。Oracle GoldenGate软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时复制。
[0003]Oracle GoldenGate是一种基于软件的数据复制方式,它从数据库的log解析数据的变化,将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,Oracle GoldenGate可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的。从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,OracleGoldenGate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
[0004]Oracle GoldenGate技术解决了目前业界难以解决的在不同系统之间进行海量数据实时同步问题,并可以根据业务需求进行部分关键数据同步,操作灵活、方便,实现了对实时信息的实时访问,使得企业可以提高可用性、可靠性、和跨企业系统的关键数据性能。采用GoldenGate的数据复制技术,可以实现数据实时备份,确保核心数据的安全,同时避免引入过多种类的软硬件产品,降低了运营维护的复杂度和投入,有利于灾备系统的恢复和切换。该技术可以广泛用于对数据库系统实时性要求高,需要建立容灾系统的大中型企业。
[0005]随着近几年来业务系统的不断高速发展,当前的数据库系统,随着客户的增加,业务的增长以及时间的累积,系统单位时间在线交易数以及每笔交易的复杂度均有大规模的提升,这样也导致了数据库系统上的数据变更更为频繁,数据变动量的增加,也必然导致生产系统向容灾系统同步数据以及切换容灾系统的压力变大。但是目前现有的技术都存在有比较明显的缺陷,容易由于源端数据异常,使其无法通过目标数据库的校验机制,触发数据库报错,从而导致GoldenGate同步异常,最终导致源库与目标库的数据不一致,使企业蒙受巨大的损失。
[0006]Oracle GoldenGate软件能支持Oracle Database之间数据的实时同步,然而对于源数据库中某些date类型数据本身就不符合Oracle Database的数据类型,如“0000-00-0000:00:00”、“2014-02-2900:00:00”、“2012-06-0125:00:00” 等等,因Oracle Database的bug或者应用程序设计上的问题导致这种数据写进了源数据库。由于Oracle GoldenGate本质原理为解析redo信息并在目标数据库重构语句,处理相应记录,而期间目标数据库会对记录进行校验,上述提到的date类型数据就会触发数据库报错,如ORA-01843:not a valid month,进而导致进程ABENDED或记录丢失(具体结果因GoldenGate的REPERR0R策略设置而异,但均会导致数据不一致)。
[0007]在实际生产环境中,可从源端着手解决,避免异常数据。然而应用程序的修改以及数据库补丁的升级是一项复杂的工程,工作量繁重,会中断业务系统的正常运行。在一些极端的环境下,还会出现客户拒绝修改应用或者数据库的情况。
[0008]针对这种问题,目前业内的基本解决方案主要有三种:1)重置为空值。2)重新初始化。C)忽略问题记录。
[0009]为了方便描述,下面将对部分名词作统一约定。
[0010]
【权利要求】
1.一种基于日志的结构化数据同步方法,其特征在于,包括如下步骤: a)创建中间表,用于存放存疑表的主键以及存疑字段; b)修改数据库同步设置,加入存疑表到中间表的同步策略; c)修改数据库同步设置策略,在存疑表到存疑表的同步中加入过滤条件以及存储过程; d)在存疑表上创建触发器并设置触发日期,用于中间表的清理以及非法日期格式数据的录入。
2.如权利要求1所述的基于日志的结构化数据同步方法,其特征在于,所述数据库为Oracle Golden Gate,所述存疑表中异常数据以字符串形式插入到该中间表中,若中间表中的异常数据为数据表主键的一部分,则指定数据表中的其他字段作为主键。
3.如权利要求2所述的基于日志的结构化数据同步方法,其特征在于,如果存疑表中存在存疑日期,则将存疑日期替换为触发日期。
4.如权利要求2所述的基于日志的结构化数据同步方法,其特征在于,所述步骤b)中存疑表到中间表的同步过程如下: 对于DML类型为INSERT的记录,将Oracle GoldenGate主键以及存疑字段直接插入到中间表; 对于DML类型为DELETE的记录,忽略存疑表到中间表的同步; 对于DML类型为UPDATE的记录,如果存疑字段状态均为缺失状态,忽略存疑表到中间表的同步;否则将相应记录的GoldenGate主键以及存疑字段插入到中间表。
5.如权利要求2所述的基于日志的结构化数据同步方法,其特征在于,所述步骤c)中存疑表到存疑表的同步过程如下: 首先发起SQL语句查询,若返回的中间表的存疑字段中存在非法日期格式,利用GoldenGate的COLMAP功能,将状态非缺失的异常记录的非法日期改为触发日期; 然后再进行正常的GoldenGate同步。
6.如权利要求2所述的基于日志的结构化数据同步方法,其特征在于,所述步骤d)中触发器的处理过程如下: dl)判断存疑日期是否均非触发日期,如果结果为真,则说明记录无任何异常,触发器的处理过程结束; d2)通过查询中间表获取各存疑字段,并以字符串格式存放; d3)对存疑字段的各值作运算,生成RAW格式的值; d4)调用Oracle的函数转化将存疑数据从RAW格式转化为日期格式; d5)利用主键更新存疑字段并清理中间表。
【文档编号】G06F17/30GK103455557SQ201310345269
【公开日】2013年12月18日 申请日期:2013年8月8日 优先权日:2013年8月8日
【发明者】程永新, 黎君原 申请人:上海新炬网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1