一种在两个数据库间进行相同数据表数据复制的方法技术

技术编号:2873463 阅读:346 留言:0更新日期:2012-04-11 18:40
本发明专利技术为解决两个不同版本数据库间的数据复制中存在的效率低下、操作烦琐和数据易遭破坏的问题,通过采用数据库触发器技术和编制数据复制软件,实现了以非文件的方式进行数据的大批量复制。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及在两个数据库间进行相同数据表的数据复制,尤其涉及以非文件的方式实现两个在线数据库间相同数据表的数据复制。
技术介绍
在信息系统中,两个数据库间往往需要进行大量的数据复制。在相同版本的数据库系统中,数据复制可以通过数据库自身的复制功能来实现,而对于不同版本的数据库之间的数据复制,现有的方法是将源数据库中所需复制的表中的所有数据全部导出,生成一个文件,再将目的数据库的相应表中的所有记录全部删除,将生成的文件导入目的数据库,从而完成两个数据库间的数据复制。由于不同数据库间的数据复制不是一个增量复制,即每次导出数据都要将所需复制的表中的所有数据全部导出,而无法只导出变化的数据。这样,若需要复制的数据量很大且复制操作频繁的话,则这种全盘复制的方法既烦琐效率又低,而且采取这种文件交换的方式,还存在着若文件被破坏则所有数据都无法复制的隐患。
技术实现思路
针对上述使用文件交换复制数据的方法所存在的缺点,本专利技术采用了,即利用本专利技术的数据库触发技术,结合建立的交换控制表和数据日志表,运行编制的数据软件,通过数据库间的数据链路只对变化的数据进行复制,即对数据库间的数据进行增量复制。本专利技术按照如下技术方案来实现不同数据库间的数据复制。首先在源数据库中要复制的业务表上建立三个数据库触发器,分别对应业务表的增、删、更新操作;分别为每个数据库建立一个标识,并建立数据库间的数据链路,使两个数据库可以互访。其次,在源数据库和目的数据库中分别建立数据日志表和交换控制表。其中,数据日志表记录了所要复制业务表的触发器产生的数据日志号和数据日志内容,数据日志内容又包括需要向其它数据库上传和下传的表名、变化记录的主键,以及什么样的变化,如增、删操作(更新操作相当于先删后增);交换控制表中记录了当前数据库需要向其它数据库上传和下传的表名、当前数据日志表中最后复制的日志号码、源数据库的标识和目标数据库的标识。接着,采用下述步骤进行数据复制a.对源数据库的业务表进行增、删操作时触发了建立的增、删、更新三个触发器,使业务表中变化的记录转换成相应的数据日志记录;b.连通源数据库和目的数据库服务器的网络连接,使数据复制软件能通过数据库标识和数据链路与数据库相连接;c.运行数据复制软件;c1.根据数据控制表,取得要复制的表名和最新日志编号;c2.根据数据日志表,从业务表中取得相应的记录;c3.根据数据日志表中的操作,将取得的源数据库中的相应记录对目的数据库的业务表进行更新;d.将交换控制表中的最新复制日志号设置成最后一次复制的日志编号。采用本专利技术,避免了在数据量大、数据交换频繁的情况下进行全表数据复制所带来的低效率、数据库压力大和一旦导出文件被破坏时数据无法被复制的缺陷,是一种灵活的数据库之间的非文件方式的在线数据复制方法。附图说明图1为oracle personal数据库和oracle enterprise数据库间的增量数据上传复制流程图。具体实施例方式下面结合附图和一个实施例对本专利技术进行详细说明。适用于本专利技术的在两个在线数据库间进行相同数据表的数据复制发生在oraclepersonal数据库和oracle enterprise数据库之间。把oracle personal数据库标识为person,把oracle enterprise数据库标识为enterprise。Person和enterprise中各有一张结构相同的t_up表和一张结构相同的t_down表。现在需要将person中的t_up表复制到enterprise中的t_up表,以及将enterpri se中的t_down表复制到person中的t_down表中。首先,在person库中建立一个与enterprise库相连的名为enterprise&repl的数据链路;在person库中的t_up表上分别建立代表增、删、更新操作的三个触发器,在enterprise库中的t_down表上也分别建立代表增、删、更新操作的三个触发器。其次,在对person库中的t_up表进行增、删、更新操作时,由触发器产生的日志内容记录在下面的已建于person库中的数据日志中(表名为log) 同时,在person库中建立了如下的数据控制表(表名为ctrl),其一条记录代表t_up的上传,一条记录代表t_down的下传 类似的,enterprise库中也有一张结构与log一致的数据日志表,其内容由enterprise库中的t_down的触发器产生 进行这两个不同的数据库间的数据复制。即先通过对person库中的t_up表输入、删除或更新许多记录时,利用不同的触发器在person库中的log表中产生了许多日志记录,如在t_up表中新加一条记录,log中就相应增加这样一条记录no为当前最大号加一,table_name为“t_up”,oper为“1”,pk_value为该业务记录的主键值。相应的,通过业务软件在enterprise库中的t_down表中输入、删除或更新了许多记录,利用不同的触发器在enterprise库中的log表中也产生了许多日志记录。如图1所示,运行数据复制软件,通过ctrl表的source字段和target字段可知要上传t_up表和下传t_down表。本实施例仅以上传为例,下传情况一样,只是数据源不同,并从max_no字段中知道要从log表中的哪条记录开始复制。连通person库的ctrl表的target字段中存放的库名即enterprise库,根据log表中的pk_value字段找到person库中t_up表中的相应记录,取出该记录,同时得到log表中oper字段的值,如果是1(增加),就把得到的记录插入到enterprise库中的表t_up中,从而完成本条记录的上传工作。log表中其余每条日志也像上述操作一样,就可以把所有的日志都转化为enterprise库中t_up中的内容。复制完成后在ctrl表中将max_no设成最后一次复制的日志的编号即可,这样以后的复制过程就不会再复制已复制过的记录了。下传数据道理相同,只是在enterprise库中根据log取出t_down的数据复制到person库中。这样,就完成了整个数据库的增量数据复制过程。权利要求1.,其特征在于,所述方法包括如下步骤步骤a、在数据库数据业务表中建立增、删、更新三个触发器;步骤b、在数据库中建立一张数据日志表和一张交换控制表;步骤c、通过业务表的增、删、更新操作,触发相应触发器,将数据业务表中变化的记录转换成数据日志表中相应的日志记录;步骤d、连通源数据库所在的数据库服务器和目的数据库所在的数据库服务器,通过数据库标识和数据链路,使应用软件能连接源数据库和目的数据库;步骤e、运行数据复制软件,完成数据复制;步骤d、将交换控制表中的最新复制日志号设置成最后一次复制的日志编号。2.如权利要求1所述的,其特征在于,在步骤b中所述的交换控制表包括当前数据库需要向其它数据库上传和下传的表的名称、当前数据日志表中最后复制的日志号码、源数据库的标识和目标数据库的标识。3.如权利要求1所述的,其特征在于,在步骤b中所述的数据日志表包括需要复制的业务表的触发器产生的本文档来自技高网...

【技术保护点】
一种在两个数据库间进行相同数据表数据复制的方法,其特征在于,所述方法包括如下步骤:步骤a、在数据库数据业务表中建立增、删、更新三个触发器;步骤b、在数据库中建立一张数据日志表和一张交换控制表;步骤c、通过业务表的增、删、更新操作 ,触发相应触发器,将数据业务表中变化的记录转换成数据日志表中相应的日志记录;步骤d、连通源数据库所在的数据库服务器和目的数据库所在的数据库服务器,通过数据库标识和数据链路,使应用软件能连接源数据库和目的数据库;步骤e、运行数据复制软 件,完成数据复制;步骤d、将交换控制表中的最新复制日志号设置成最后一次复制的日志编号。

【技术特征摘要】

【专利技术属性】
技术研发人员:王晴岗李光亚袁力靖矫成东金刚纪洁黄中慧刘继华周燕芳
申请(专利权)人:万达信息股份有限公司
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1