表增量获取方法及异地数据备份方法
【技术领域】
[0001]本发明涉及数据库管理,特别是涉及一种表增量获取方法和一种异地数据备份的方法。
【背景技术】
[0002]数据库几乎是目前生产企业用来管理生产数据的必备组件,对于大型生产企业而言,数据库中的数据量非常大,对其进行备份时都需要花费大量的时间。而当企业的各个分支机构分散在不同的地区时,相互之间的数据要保持一致,只能通过网络进行传输。
[0003]在目前的网络条件下,当数据量达到T级(1T = 1,000G = 1,000, 000M)时,网络传输相当耗时和不稳定。因此,为了提高效率,仅传输数据库间的差异数据,包括增加、修改和删除的数据。
[0004]数据库的类型一般包括SQL Server>0arcle以及DB2等,其中Oarcle用得较为广泛。Oarcle数据库自身带有获取数据增量的工具,但是Oarcle自身获取数据增量的方式需要牺牲服务器较多的CPU性能和磁盘1/0,降低服务器整体性能。例如生成千万级的表增量需要几个小时甚至一天,无法满足实际应用的需要。
【发明内容】
[0005]基于此,有必要提供一种表增量获取方法,能够提高获取表增量的速度。
[0006]此外,还提供一种异地数据备份的方法,能够提高异地数据备份的速度。
[0007]一种表增量获取方法,包括如下步骤:
[0008]基于SAP平台,经由SAP数据字典建立对Oracle数据库的访问和操作;
[0009]在更新时间节点之前,将Oracle数据库的目标表读取到内表;
[0010]在更新时间节点之后,将Oracle数据库的目标表读取到内表;
[0011]根据目标表的主键,在内存中对更新时间节点前后的目标表进行分析比较,获得表增量。
[0012]在其中一个实施例中,所述更新时间节点按固定周期推进,用于比较的两个目标表的时间跨度不大于该固定周期。
[0013]在其中一个实施例中,所述固定周期为24小时。
[0014]在其中一个实施例中,所述获取表增量的步骤包括:
[0015]定义在更新时间节点之后的目标表中存在、而更新时间节点之前的目标表中没有的记录为第一类记录;
[0016]定义在更新时间节点之前的目标表中存在、而更新时间节点之后的目标表中没有的记录为第二类记录;
[0017]定义更新时间节点之后的目标表和更新时间节点之前的目标表中存在具有相同主键、但内容有差别的记录为第三类记录;
[0018]比较更新时间节点前后的目标表:
[0019]若存在第一类记录,则将该第一类记录在表增量中添加为新增记录;
[0020]若存在第二类记录,则将该第二类记录在表增量中添加为删除记录;
[0021]若存在第三类记录,则将该第三类记录在表增量中添加为修改记录。
[0022]一种异地数据备份方法,包括如下步骤:
[0023]将源服务器的oracle数据库中的初始表发送到目标服务器;
[0024]获取源服务器的表增量并发送到目标服务器;
[0025]目标服务器根据初始表和表增量生成备份表;
[0026]其中,所述获取源服务器的表增量的方法包括如下步骤:
[0027]基于SAP平台,经由SAP数据字典建立对Oracle数据库的访问和操作;
[0028]在更新时间节点之前,将Oracle数据库的目标表读取到内表;
[0029]在更新时间节点之后,将Oracle数据库的目标表读取到内表;
[0030]根据目标表的主键,在内存中对更新时间节点前后的目标表进行分析比较,获得表增量。
[0031]在其中一个实施例中,所述更新时间节点按固定周期推进,用于比较的两个目标表的时间跨度不大于该固定周期。
[0032]在其中一个实施例中,所述固定周期为24小时。
[0033]在其中一个实施例中,所述获取表增量的步骤包括:
[0034]定义在更新时间节点之后的目标表中存在、而更新时间节点之前的目标表中没有的记录为第一类记录;
[0035]定义在更新时间节点之前的目标表中存在、而更新时间节点之后的目标表中没有的记录为第二类记录;
[0036]定义更新时间节点之后的目标表和更新时间节点之前的目标表中存在具有相同主键、但内容有差别的记录为第三类记录;
[0037]比较更新时间节点前后的目标表:
[0038]若存在第一类记录,则将该第一类记录在表增量中添加为新增记录;
[0039]若存在第二类记录,则将该第二类记录在表增量中添加为删除记录;
[0040]若存在第三类记录,则将该第三类记录在表增量中添加为修改记录。
[0041]在其中一个实施例中,源服务器采用FTP向目标服务器发送初始表和表增量。
[0042]上述获取表增量的方法,利用SAP平台的内表技术,可以把数据表读入在内存中进行比较,相比于oracle数据库需要占用CPU资源和磁盘1/0的处理方式来说,其速度较快,对千万级的数据表,比较目标表并获得表增量的时间仅需要几分钟。
[0043]上述异地数据备份方法基于该表增量获取方法,也具有较快的备份速度。
【附图说明】
[0044]图1为一实施例的表增量获取方法流程图;
[0045]图2为一实施例的异地数据备份方法流程图;
[0046]图3为图2的备份方法的数据获取和流向示意图。
【具体实施方式】
[0047]如图1所示,为一实施例的表增量获取方法流程图。该方法包括如下步骤。
[0048]步骤S101:基于SAP平台,经由SAP数据字典建立对Oracle数据库的访问和操作。SAP平台(Systems, Applicat1n and Products in Data processing),指的是SAP商务套件,其中的R/3系统以模块化的形式提供了一整套业务措施,用于公司或企业战略上和运用上的管理。该系统本身是一个标准的通用的系统,可以通过配置,为不同的行业提供不同的解决方案,同时也提供了基于 ABAP(Advanced Business Applicat1n Programming)语言的一套开发工具。本实施例的SAP平台是基于该商务套件中的R/3系统,利用ABAP语言进行二次开发完成所需的功能。本实施例主要针对Oracle数据库。SAP平台通过SAP数据字典可建立对Oracle数据库的访问和操作。
[0049]步骤S102:在更新时间节点之前,将Oracle数据库的目标表读取到内表。内表是ABAP编程语言的一种技术,其与一般编程语言中的结构体类似,是程序运行中被临时创建的一个存储空间,它是一个可包含多条记录的数据表。因此内表是驻于内存中的。更新时间节点是指更新数据的时间点,通常可在程序中设置定时事件来触发更新操作。目标表即是要处理的数据表。
[0050]步骤S103:在更新时间节点之后,将Oracle数据库的目标表读取到内表。
[0051]经过步骤S102和步骤S103,更新时间节点前后的目标表都存储于内表中。
[0052]步骤S104:根据目标表的主键,在