基于Oracle数据库的数据一致性校验方法

文档序号:6632390阅读:6163来源:国知局
基于Oracle数据库的数据一致性校验方法
【专利摘要】本发明公开了一种基于Oracle数据库的数据一致性校验方法,包括如下步骤:a)暂停Oracle数据库复制进程,使得Oracle数据库提交所有事务;b)获取源端数据库的时间戳信息SCN;c)查询目标端数据库并获取当前时间戳信息SCN后,重启暂停的Oracle数据库复制进程,恢复Oracle数据库同步;d)在源端数据库与目标端数据库的时间戳信息SCN相一致的情况下,再对对应表做数据一致性校验。本发明提供的基于Oracle数据库的数据一致性校验方法,在获取匹配的时间戳信息之后再进行数据一致性校验,从而能够顺利处理变更频繁的记录,不依赖任何业务逻辑与主键,且校验效率速度快,配置简单易用。
【专利说明】基于Oracle数据库的数据一致性校验方法

【技术领域】
[0001] 本发明涉及一种数据库的数据校验方法,尤其涉及一种基于Oracle数据库的数 据一致性校验方法。

【背景技术】
[0002] OracleGoldenGate软件是一种基于log(日志)的结构化数据复制软件,它通过 解析源数据库在线log或归档log获得数据的增、删、改变化,再将这些变化应用到目标数 据库,实现源数据库与目标数据库同步、双活。OracleGoldenGate软件可以在异构的IT基 础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时 复制。
[0003] OracleGoldenGate是一种基于软件的数据复制方式,它从数据库的log解析数 据的变化,将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库 自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需 求。在目标端,OracleGoldenGate可以通过交易重组,分批加载等技术手段大大加快数据 投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目 标端数据库是活动的。从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据 同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle GoldenGate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵 活的拓扑结构。
[0004] OracleGoldenGate技术解决了目前业界难以解决的在不同系统之间进行海量数 据实时同步问题,并可以根据业务需求进行部分关键数据同步,操作灵活、方便,实现了对 实时信息的实时访问,使得企业可以提高可用性、可靠性和跨企业系统的关键数据性能。采 用GoldenGate的数据复制技术,可以实现数据实时备份,确保核心数据的安全,同时避免 引入过多种类的软硬件产品,降低了运营维护的复杂度和投入,有利于灾备系统的恢复和 切换。该技术可以广泛用于对数据库系统实时性要求高,需要建立容灾系统的大中型企业。
[0005] 随着近几年来业务系统的不断高速发展,当前的数据库系统,随着客户的增加,业 务的增长以及时间的累积,系统单位时间在线交易数以及每笔交易的复杂度均有大规模的 提升,这样也导致了数据库系统上的数据变更更为频繁,数据变动量的增加,也必然导致生 产系统向容灾系统同步数据以及切换容灾系统的压力变大。
[0006] 然而OracleGoldenGate毕竟是一种逻辑的数据同步手段,其搭建以及运维均涉 及复杂的步骤,因此,准确而有效的数据一致性校验是必须的;其中针对系统迁移以及割接 的项目,在割接前的数据一致性验证是很多客户,特别是新接触OracleGoldenGate软件的 客户所要求的。
[0007] 由于OracleGoldenGate采用的是异步的同步方式,存在时间延迟(默认情况下 约10秒左右),时间延迟内,两边的数据可能发生了多次的DML操作,如何在存在时间差的 情况下准确校验数据一致性成为业界的难题。
[0008] 目前情况下,业界针对OracleGoldenGate的数据一致性验证方案一般有下述三 种方式:
[0009] 1、基于业务逻辑的数据一致性校验方法
[0010] 这种方法需要业务系统的运维或者开发人员配置,根据业务逻辑,查询一到多个 表生成静态的结果集,然后再比较静态结果集的数据一致性。
[0011] 比较静态结果集的数据一致性则有如下方法:1)简单地通过聚合函数、记录数 等确认;2)通过minus运算确认;3)通过表记录哈希值总和以及记录数确认;4)通过 GoldenGateVeridata进行校验。
[0012] 上述处理方法分两步,静态结果集的生成以及静态结果集的对比。静态结果集校 验一般来说不会存在瓶颈,上文说的minus、哈希等方式均能准确地验证。
[0013] 静态结果集生成则成为主要的瓶颈,此方式要求应用人员配合,这是校验的主要 瓶颈项,主要体现在以下方面:1)仅能针对业务逻辑进行校验,所对比的静态结果没问题, 不代表同步没有问题;2)通常情况仅部分核心表能根据业务逻辑梳理出静态结果集,其余 表无法通过这种方式进行校验;3)需要应用人员进行配合,实际操作中容易出现责任不清 晰等管理问题。
[0014] 2、忽略时间延迟直接进行数据一致性校验方法
[0015] 这种方法简单地确认OracleGoldenGate运行状态正常以及不存在大的时间延迟 后,直接进行数据一致性校验。由于这种方式比较粗略,因此一般仅通过下述方法校验:1) 通过minus对比,然后分析差异记录;2)简单地通过聚合函数、记录数等确认。
[0016] 上述处理方法同样分两步,即OracleGoldenGate运行状态的检查确认以及数据 一致性的校验。OracleGoldenGate运行状态的检查后,可基本上确认同步延迟是否在可接 受范围内(默认情况下10秒),此后即可直接发起校验。
[0017] 如果后续校验采用count(*)以及聚合函数进行校验的话,存在如下瓶颈:1)仅能 给出一个大致的校验结果,很可能由于同步时间延迟而造成结果不一致,但结果不一致并 不等于数据的不一致;2)如果串行地对比多个表,则很容易由于查询语句运行时间不同而 导致后续语句发起时间点的不一致,导致结果差异更大,而影响对结果准确性的判断。
[0018] 如果后续采用校验采用minus方式,则瓶颈为如下:1)很容易出现由于时间延 迟而导致的差异,差异记录需要进一步判断,以确定同步是否存在异常;2)需要进行两次 minus操作校验,性能消耗较大,通常仅能用于校验数据量较小的表;3)要求创建数据库 dblink,部分生产环境管理规范不允许。
[0019] 3、基于OracleGoldenGateVeridata的数据一致性校验方法
[0020] OracleGoldenGate是Oracle官方的数据一致性校验工具,这种工具自动对初 次校验记录不一致的表进行二次校验。直接利用OracleGoldenGateVeridata进行校验 则是Oracle官方的一种方法,这种方式的瓶颈在于:1)成本更高,需要另外购买Oracle GoldenGateVeridata软件,有可能需要购买新的机器,并搭建数据库;2)对于初次对比后 发现的不一致记录(通常是由于时间延迟而产生的),采用再次校验单条记录一致性的方 法进行,如果单条记录在校验期间多次变更,则仅能识别为变化中的数据;3)校验的精度 较细,但为此付出的为较大资源消耗以及时间;4)无主键或者唯一键的表校验效率低下, 且消耗大量的临时表空间或者文件系统目录。
[0021] 由上可见,现有Oracle数据库的几种处理方式均无法彻底地解决数据一致性的 问题。因此,有必要继续对基于Oracle数据库的数据一致性校验方法进行改进。


【发明内容】

[0022] 本发明所要解决的技术问题是提供一种基于Oracle数据库的数据一致性校验方 法,能够顺利处理变更频繁的记录,不依赖任何业务逻辑与主键,且校验效率速度快,配置 简单易用。
[0023] 本发明为解决上述技术问题而采用的技术方案是提供一种基于Oracle数据库的 数据一致性校验方法,包括如下步骤:a)暂停Oracle数据库复制进程,使得Oracle数据 库提交所有事务;b)获取源端数据库的时间戳信息SCN;c)查询目标端数据库并获取当前 时间戳信息SCN后,重启暂停的Oracle数据库复制进程,恢复Oracle数据库同步;d)在源 端数据库与目标端数据库的时间戳信息SCN相一致的情况下,再对对应表做数据一致性校 验。
[0024] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述步骤a)检查到复制 进程的队列文件序号seqno和复制位置rba值相一致,并确认复制进程处于停止状态后再 获取源端数据库的时间戳信息SCN。
[0025] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述步骤b)中源端数 据库的时间戳信息SCN获取过程如下:根据复制进程的队列文件信息以及rba值,通过 logdump工具获取。
[0026] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述步骤b)中源端数据 库的时间戳信息SCN获取过程如下:
[0027] 在源端数据库创建校验指令表记录源端数据库的时间戳信息SCN;在目标端数据 库创建相应的校验指令表获取来自源端数据库的时间戳信息SCN。
[0028] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述源端数据库的校验 指令表的操作过程如下:每次操作仅仅允许插入一条记录,并在插入后马上进行提交操作; 所述源端数据库的校验指令表配置在抽取进程的末尾,以异构同步的方式仅供经过验证的 脚本调用运行,并通过GoldenGate的GETENV函数获取主机名、数据库名和时间戳信息SCN。
[0029] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述目标端数据库的校 验指令表仅仅允许查询和清理操作;所述目标端数据库的校验指令表配置在复制进程的末 尾,通过WHERE关键字过滤触发单个或者多个复制进程停止;或者通过EVENTACTI0NS功能, 触发复制进程做检查点,并停止复制进程。
[0030] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述目标端数据库的校 验指令表包括如下字段:源端主机名、源端数据库名、源端抽取进程名、源端提交时间戳、目 标端复制进程名和目标端提交前时间戳;所述源端主机名、源端数据库名、源端抽取进程名 和源端提交时间戳由源端抽取进程自动填充;所述目标端复制进程名和目标端提交前时间 戳由复制进程自动填充。
[0031] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述C)步骤通过调用 SQL语句获取目标端数据库的当前时间戳信息SCN。
[0032] 上述的基于Oracle数据库的数据一致性校验方法,其中,所述步骤d)中通过 minus运算确认、表记录哈希值总和以及记录数确认或者GoldenGateVeridata进行对应 表数据一致性校验。
[0033] 上述的基于Oracle数据库的数据一致性校验方法,其中,如果源端数据库与目标 端数据库的时间戳信息SCN不一致,选择时间戳信息在前的SCN号进行数据库还原。
[0034] 本发明对比现有技术有如下的有益效果:本发明提供的基于Oracle数据库的数 据一致性校验方法,通过先获取用于标识数据库某个确切提交版本的时间戳信息SCN,在获 取匹配的时间戳信息之后再进行数据一致性校验,从而能够顺利处理变更频繁的记录,不 依赖任何业务逻辑与主键,且校验效率速度快,配置简单易用。

【专利附图】

【附图说明】
[0035] 图1为本发明基于Oracle数据库的数据一致性校验流程示意图;
[0036] 图2为本发明Oracle数据库源端目标端配置检查指令表及操作策略流程示意 图;
[0037]图3为本发明采用检查指令表获取时间戳信息进行数据一致性校验流程示意图。

【具体实施方式】
[0038] 下面结合附图和实施例对本发明作进一步的描述。
[0039] 图1为本发明基于Oracle数据库的数据一致性校验流程示意图。
[0040] 请参见图1,本发明提供的基于Oracle数据库的数据一致性校验方法包括如下步 骤:
[0041] 步骤S1 :暂停Oracle数据库复制进程,使得Oracle数据库提交所有事务;比如检 查到复制进程的seqno和rba值相一致即可确认复制进程处于停止状态。
[0042] 步骤S2:获取源端数据库的时间戳信息SCN;针对不同的数据库平台,时间戳信息 将有所不同。对于本发明涉及的oracledatabase,可供校验使用的时间戳信息为SCN。所 谓的SCN全称为SystemChangeNumber,是oracledatabase的一个内部时间戮,用于标 识数据库某个确切提交的版本。在事务提交或者回滚时,它被赋予一个唯一的标识事务的 SCN,用来保证数据的一致性。作为数据库内部的逻辑时钟,数据库事务依SCN而排序,SCN 在数据库中是唯一的,并随时间而增加,除非重建数据库,SCN的值永远不会被重置为0。
[0043]oracledatabase的闪回版本查询功能(FlashbackVersionQuery)可以支持基 于SCN的查询,根据某个具体的SCN号,还原某个时间点数据库表的版本,查询语句例子如 下:
[0044]SQL>selectcount(*)fromCRABBIT.ORDERSasofsen47572949274〇
[0045]OracleGoldenGate在复制数据库事务时是严格依照源端数据库的顺序进行的。 因此,基于OracleGoldenGate自身的原理,理论上是可以找出无数个对应的时间戳信息, 根据这种对应的时间戳信息,即可判断某个特定的表在某个特定的时间戳信息数据是否一 致。
[0046] 步骤S3:查询目标端数据库并获取当前时间戳信息SCN后,重启暂停的Oracle数 据库复制进程,恢复Oracle数据库同步。
[0047] 步骤S4 :在源端数据库与目标端数据库的时间戳信息SCN相一致的情况下,再对 对应表做数据一致性校验。在获取匹配的时间戳信息之后,校验数据一致性的方法与校验 静态数据的方法是一致的:
[0048] 1)通过minus运算确认;
[0049] 2)通过表记录哈希值总和以及记录数确认;
[0050] 3)通过GoldenGate Veridata进行校验。
[0051] 上述三种方法或者现有的其它方法均可以实现具体的数据一致性校验,在此不再 一一赘述。如果源端数据库与目标端数据库的时间戳信息SCN不一致,选择时间戳信息在 前的SCN号进行数据库还原。
[0052] 基于性能以及效率的考虑,OracleGoldenGate的目标端往往会配置 GR0UPTRANS0PS等参数进行优化,此参数会在目标端合并多个小事务并一次性提交,这是一 种非常规的配置方法,因此选取配对时间戳信息时,必须考虑这个点。
[0053] OracleGoldenGate停止的时候必然会进行事务提交,而且停止重启的代价非常 低,因此停止OracleGoldenGate进程并重启的巡检是一个比较好的机会获取时间戳信息。 当OracleGoldenGate进程停止后,此复制进程对应的表均处于静止状态,此时获取对应的 数据库SCN即可。而在复制进程停止的状态下,也可以根据复制进程的队列文件信息以及 rba号,通过logdump工具获取源端具体的SCN信息,但此步骤较麻烦,本发明则做了一个优 化,直接通过OracleGoldenGate侧的特殊配置,将SCN写到特殊的数据库表中,免却使用 logdump工具的麻烦。
[0054] 本发明源端目标端配置检查指令表及操作策略部署流程如图2所示,包括如下步 骤:
[0055] 1、在源端数据库创建GoldenGate校验指令表;2、在目标端数据库创建 GoldenGate校验指令表;3、在源端数据库做GoldenGate校验指令表的特殊配置;4、在目标 端数据库做GoldenGate校验指令表的特殊配置。
[0056] 在源端数据库创建GoldenGate校验指令表要求如下:
[0057] 此表为GoldenGate的校验以及检查专用,不允许其余应用占用;
[0058] 操作此表必须经过已验证的脚本运行,不允许其余未经验证的手工操作(操作规 范为,仅做insert操作,仅插入一条记录,插入后马上commit)
[0059] 字段要求如下:

【权利要求】
1. 一种基于化acle数据库的数据一致性校验方法,其特征在于,包括如下步骤: a) 暂停Oracle数据库复制进程,使得Oracle数据库提交所有事务; b) 获取源端数据库的时间戳信息SCN ; C)查询目标端数据库并获取当前时间戳信息SCN后,重启暂停的化acle数据库复制进 程,恢复化acle数据库同步; d)在源端数据库与目标端数据库的时间戳信息SCN相一致的情况下,再对对应表做数 据一致性校验。
2. 如权利要求1所述的基于Oracle数据库的数据一致性校验方法,其特征在于,所述 步骤a)检查到复制进程的队列文件序号seqno和复制位置rba值相一致,并确认复制进程 处于停止状态后再获取源端数据库的时间戳信息SCN。
3. 如权利要求1所述的基于化acle数据库的数据一致性校验方法,其特征在于,所述 步骤b)中源端数据库的时间戳信息SCN获取过程如下:根据复制进程的队列文件信息W及 rba值,通过logdump工具获取。
4. 如权利要求1所述的基于Oracle数据库的数据一致性校验方法,其特征在于,所述 步骤b)中源端数据库的时间戳信息SCN获取过程如下: 在源端数据库创建校验指令表记录源端数据库的时间戳信息SCN ;在目标端数据库创 建相应的校验指令表获取来自源端数据库的时间戳信息SCN。
5. 如权利要求4所述的基于Oracle数据库的数据一致性校验方法,其特征在于,所述 源端数据库的校验指令表的操作过程如下:每次操作仅仅允许插入一条记录,并在插入后 马上进行提交操作;所述源端数据库的校验指令表配置在抽取进程的末尾,W异构同步的 方式仅供经过验证的脚本调用运行,并通过GoldenGate的GETENV函数获取主机名、数据库 名和时间戳信息SCN。
6. 如权利要求4所述的基于化acle数据库的数据一致性校验方法,其特征在于,所述 目标端数据库的校验指令表仅仅允许查询和清理操作;所述目标端数据库的校验指令表配 置在复制进程的末尾,通过W肥RE关键字过滤触发单个或者多个复制进程停止;或者通过 EVENTACTIONS功能,触发复制进程做检查点,并停止复制进程。
7. 如权利要求6所述的基于化acle数据库的数据一致性校验方法,其特征在于,所述 目标端数据库的校验指令表包括如下字段:源端主机名、源端数据库名、源端抽取进程名、 源端提交时间戳、目标端复制进程名和目标端提交前时间戳;所述源端主机名、源端数据库 名、源端抽取进程名和源端提交时间戳由源端抽取进程自动填充;所述目标端复制进程名 和目标端提交前时间戳由复制进程自动填充。
8. 如权利要求1所述的基于Oracle数据库的数据一致性校验方法,其特征在于,所述 C)步骤通过调用S化语句获取目标端数据库的当前时间戳信息SCN。
9. 如权利要求1所述的基于化acle数据库的数据一致性校验方法,其特征在于,所 述步骤d)中通过minus运算确认、表记录哈希值总和W及记录数确认或者GoldenGate Veridata进行对应表数据一致性校验。
10. 如权利要求1?9任一项所述的基于化acle数据库的数据一致性校验方法,其特 征在于,如果源端数据库与目标端数据库的时间戳信息SCN不一致,选择时间戳信息在前 的SCN号进行数据库还原。
【文档编号】G06F11/00GK104346454SQ201410598198
【公开日】2015年2月11日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】程永新, 宋辉, 黎君原 申请人:上海新炬网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1