一种对ORACLE数据库内外网数据双向同步的系统及方法与流程

文档序号:15798332发布日期:2018-11-02 21:15阅读:2089来源:国知局
一种对ORACLE数据库内外网数据双向同步的系统及方法与流程

本发明涉及数据库数据同步领域,具体地说是一种实用性强的对oracle数据库内外网数据双向同步的系统及方法。

背景技术

很多的业务系统需要部署在内网环境,但是一部分业务需要通过互联网访问,为了安全方面的考虑,大部分情况下是采用内外网分开部署应用程序和数据库系统,然后通过数据交换的方式来保证业务上的一致性。

当前有很多的数据交换产品能够达到上述目的;这些产品在变化数据捕获方面主要通过如下几种方式实现功能:

采用批处理程序定时轮询。

利用数据库触发器监控变化数据。

基于数据库日志分析获取变化数据。

以上几种方式各有优缺点,比如前两种实施比较复杂,对业务库的侵入性较大,第三种虽然对业务系统的性能影响很小,且实时性强,但要求数据库系统必须具有日志管理系统,并且提供了分析日志文件所需的命令或工具,此外,不同的数据库系统的日志管理机制不同,不利于设计通用的日志分析方法,基于此,亟需一种侵入性小、实施简单的数据库获取变化数据的技术。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强的对oracle数据库内外网数据双向同步的系统及方法。

一种对oracle数据库内外网数据双向同步的系统,包括,

变化数据捕获模块,通过oracle的闪回查询功能,获取变化数据;

数据抽取模块,用于在有新增数据时及时将变更的数据抽取并更新到相对应的内外网数据库中。

所述变化数据捕获模块中,通过oracle的闪回查询功能是指通过oracle的定时器定时调度存储过程来查看不同时间内是否发生数据变化,从而获取变化数据。

所述变化数据包括业务数据和事物号码。

所述数据抽取模块中配置有内网数据轮询单元和外网数据变更单元,其中内网数据轮询单元定时轮询扫描内网,外网数据变更单元用于完成外网oracle的变更表的数据更新。

一种对oracle数据库内外网数据双向同步的方法,其实现过程为,

一、首先通过变化数据捕获模块捕获变化的数据;

二、然后通过数据抽取模块在有新增数据时,将变更的数据抽取并更新到相对应的内外网数据库中。

所述步骤一中,变化数据捕获模块通过oracle的闪回查询功能完成变化数据的捕获,其具体过程为:

1)首先获取上次执行存储过程的时间;

2)获取当前时间;

3)通过oracle闪回查询获取上述两个时间之间的变化数据;

4)查找变化数据记录表中是否有主键一致同时数据事物号码为-1的记录,如果有对应的记录则直接删掉这行数据;如果没有则插入通过第3)步获取的变化数据,所述变化数据包括业务数据和事物号码。

所述步骤二中,数据抽取模块完成数据抽取更新的过程为:

首先通过内网数据轮询单元定时轮询扫描内网,查看数据是否发生变化;

外网数据变更单元在内网数据发生变化时,完成外网oracle的变更表的数据更新。

所述步骤二的具体实现过程为:

首先扫描源表的增量变化数据,发现有新的数据时开始进行抽取;再向目的表同步前先对变化数据进行判断;

如果是新增数据,通过主键检查目的库是否有此数据,有则放弃操作,无则插入此数据;

如果是修改的数据,通过主键检查目的库是否有此数据,有则进行更新操作,无则放弃此数据;

如果是删除的数据,通过主键检查目的库是否有此数据,有则进行删除操作,无则放弃此数据。

在对目的数据库进行增删改操作之前,插入到目的库对应的数据变化表一条记录,主键为源表对应的主键值,事物编码为-1,从而消除数据变化的回声。

本发明的一种对oracle数据库内外网数据双向同步的系统及方法和现有技术相比,具有以下有益效果:

本发明的一种对oracle数据库内外网数据双向同步的系统及方法,解决应用程序需要在内外网都具有访问性,数据库需要内外网相互独立,业务上需要内外网数据保持一致的问题;解决部署在内网和外网的两套oracle数据库之间数据同步问题;针对oracle数据库内外网进行数据同步,实施比较简单,对业务库的侵入性较小,能够提高项目的实施开发进度;实用性强,适用范围广泛,易于推广。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

附图1为本发明的系统的实现示例图。

具体实施方式

为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如附图1所示,一种对oracle数据库内外网数据双向同步的系统,包括,

变化数据捕获模块,通过oracle的闪回查询功能,获取变化数据;

数据抽取模块,用于在有新增数据时及时将变更的数据抽取并更新到相对应的内外网数据库中。

所述变化数据捕获模块中,通过oracle的闪回查询功能是指通过oracle的定时器定时调度存储过程来查看不同时间内是否发生数据变化,从而获取变化数据。

所述变化数据包括业务数据和事物号码。

所述数据抽取模块中配置有内网数据轮询单元和外网数据变更单元,其中内网数据轮询单元定时轮询扫描内网,外网数据变更单元用于完成外网oracle的变更表的数据更新。

一种对oracle数据库内外网数据双向同步的方法,其实现过程为,

一、首先通过变化数据捕获模块捕获变化的数据;

二、然后通过数据抽取模块在有新增数据时,将变更的数据抽取并更新到相对应的内外网数据库中。

所述步骤一中,变化数据捕获模块通过oracle的闪回查询功能完成变化数据的捕获,其具体过程为:

1)首先获取上次执行存储过程的时间;

2)获取当前时间;

3)通过oracle闪回查询获取上述两个时间之间的变化数据;

4)查找变化数据记录表中是否有主键一致同时数据事物号码为-1的记录,如果有对应的记录则直接删掉这行数据;如果没有则插入通过第3)步获取的变化数据,所述变化数据包括业务数据和事物号码。

所述步骤二中,数据抽取模块完成数据抽取更新的过程为:

首先通过内网数据轮询单元定时轮询扫描内网,查看数据是否发生变化;

外网数据变更单元在内网数据发生变化时,完成外网oracle的变更表的数据更新。

所述步骤二的具体实现过程为:

首先扫描源表的增量变化数据,发现有新的数据时开始进行抽取;再向目的表同步前先对变化数据进行判断;

如果是新增数据,通过主键检查目的库是否有此数据,有则放弃操作,无则插入此数据;

如果是修改的数据,通过主键检查目的库是否有此数据,有则进行更新操作,无则放弃此数据;

如果是删除的数据,通过主键检查目的库是否有此数据,有则进行删除操作,无则放弃此数据。

在对目的数据库进行增删改操作之前,插入到目的库对应的数据变化表一条记录,主键为源表对应的主键值,事物编码为-1,从而消除数据变化的回声。

上述主键是指primarykey,是数据库表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。

采用在目的库增量变化表设置标记的方式防止数据在两个库直接的交替震荡;在插入变化数据到目的库之前先在目的变化表插入一条标记数据标识此数据是抽取过来的。

以上所述仅为本发明的较佳实施例,本发明的专利保护范围包括但不限于上述具体实施方式,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的专利保护范围之内。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1