Oracle数据库中备份数据块的重复数据删除方法及系统的制作方法

文档序号:9844178阅读:577来源:国知局
Oracle数据库中备份数据块的重复数据删除方法及系统的制作方法
【技术领域】
[0001]本发明涉及Oracle数据库的技术领域,特别是涉及一种Oracle数据库中备份数据块的重复数据删除方法及系统。
【背景技术】
[0002]随着计算机的不断发展,计算机需要存储的数据量也在迅速增加,数据所占用的物理空间越来越多。
[0003]Oracle数据库,又名Oracle RDBMS,是甲骨文公司的一款关系数据库管理系统,其具有系统可移植性好、使用方便、功能强等优点,适用于各类大、中、小、微机环境。故作为大型数据库管理系统,Oracle数据库近年来一直占有世界上高端数据库的最大份额,在保险、银行、电信等众多企业中得到广泛应用。
[0004]RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的Oracle工具。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN只能用于0racle8或更高的版本中。
[0005]目前,很多企业和用户都会选择RMAN进行数据的备份。RMAN会对Oracle数据块进行相关操作;在数据改变后,每次备份数据都不同。因此,进行多次备份后,会存在多个副本。这就造成了存储空间的浪费,占用了网络带宽。
[0006]针对上述情况,需要在最大程度的获取到RMAN数据块后提取出RMAN数据块中相同的数据,并将这些数据只保留一份,以降低磁盘占用空间,减少网络传输。

【发明内容】

[0007]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种Oracle数据库中备份数据块的重复数据删除方法及系统,不依赖于脚本即可提取出Oracle数据库中备份数据块中的重复数据,从数据块级层面保证增量数据最大程度的相似性,通过删除重复数据来减少磁盘上冗余数据,从而降低磁盘占用空间,减少网络传输。
[0008]为实现上述目的及其他相关目的,本发明提供一种Oracle数据库中备份数据块的重复数据删除方法,包括以下步骤:步骤S1、导出初始Oracle数据文件和日志文件,生成初始备份数据块;步骤S2、将初始备份数据块拆分为块头和数据体;步骤S3、将所有块头拼接起来得到拼接块头,生成拼接块头缓存信息,并存储拼接块头的数据和缓存信息;计算拆分后的每个数据体的指纹,生成数据体缓存信息,并存储数据体的指纹和缓存信息;步骤S4、当OracIe数据库的数据文件和日志文件发生变化时,导出Oracle数据文件和日志文件,生成再次备份数据块;步骤S5、将再次备份数据块拆分为块头和数据体;步骤S6、将所有块头拼接起来得到拼接块头,生成并存储拼接块头缓存信息;计算拆分后的每个数据体的指纹,并与已存储的指纹进行比对;若比对成功,则获取并存储已存储的指纹所对应的数据体缓存信息;若比对不成功,则生成数据体缓存信息,并存储数据体数据块的指纹和缓存信息。
[0009]根据上述的Oracle数据库中备份数据块的重复数据删除方法,其中:通过RMAN脚本导出Oracle数据文件和日志文件。
[0010]根据上述的Oracle数据库中备份数据块的重复数据删除方法,其中:拼接块头时,将拆分后获取的所有块头按照先后顺序依次进行拼接,得到拼接块头。
[0011]根据上述的Oracle数据库中备份数据块的重复数据删除方法,其中:所述拼接块头缓存信息包括拼接块头的大小、块头的个数和存储位置等;所述数据体缓存信息包括数据体的存储位置和大小。
[0012]根据上述的Oracle数据库中备份数据块的重复数据删除方法,其中:采用MD5算法计
[0013]算数据体的指纹。
[0014]同时,本发明还提供一种Oracle数据库中备份数据块的重复数据删除系统,包括初始导出模块、初始拆分模块、初始备份模块、再次导出模块、再次拆分模块和再次备份模块;
[0015]初始导出模块用于导出初始Oracle数据文件和日志文件,生成初始备份数据块;
[0016]初始拆分模块用于将初始备份数据块拆分为块头和数据体;
[0017]初始备份模块用于将所有块头拼接起来得到拼接块头,生成拼接块头缓存信息,并存储拼接块头的数据和缓存信息;计算拆分后的每个数据体的指纹,生成数据体缓存信息,并存储数据体的指纹和缓存信息;
[0018]再次导出模块用于在Oracle数据库的数据文件和日志文件发生变化时,导出Oracle数据文件和日志文件,生成再次备份数据块;
[0019]再次导出模块用于将再次备份数据块拆分为块头和数据体;
[0020]再次备份模块用于将所有块头拼接起来得到拼接块头,生成并存储拼接块头缓存信息;计算拆分后的每个数据体的指纹,并与已存储的指纹进行比对;若比对成功,则获取并存储已存储的指纹所对应的数据体缓存信息;若比对不成功,则生成数据体缓存信息,并存储数据体数据块的指纹和缓存信息。
[0021]根据上述的Oracle数据库中备份数据块的重复数据删除系统,其中:通过RMAN脚本导出Oracle数据文件和日志文件。
[0022]根据上述的Oracle数据库中备份数据块的重复数据删除系统,其中:拼接块头时,将拆分后获取的所有块头按照先后顺序依次进行拼接,得到拼接块头。
[0023]根据上述的Oracle数据库中备份数据块的重复数据删除系统,其中:所述拼接块头缓存信息包括拼接块头的大小、块头的个数和存储位置等;所述数据体缓存信息包括数据体的存储位置和大小。
[0024]根据上述的Oracle数据库中备份数据块的重复数据删除系统,其中:采用MD5算法计算数据体的指纹。
[0025]如上所述,本发明的Oracle数据库中备份数据块的重复数据删除方法及系统,具有以下有益效果:
[0026](I)不依赖于备份脚本;
[0027](2)对导出的RMAN数据块进行分割,将相同数据和不相同数据分割开后分别进行识别,使得切分的数据块只有一半的指纹数,减少了指纹存储占据的空间;
[0028](3)对于重复数据块只保留一个副本,以提高了重删率,缩减磁盘上存储的数据;
[0029](4)减少磁盘使用空间和数据传输时间,节省了更多的人力物力。
【附图说明】
[0030]图1显示为本发明的Oracle数据库中备份数据块的重复数据删除方法的流程图;[0031 ]图2显示为RMAN数据块的结构示意图;
[0032]图3显示为RMAN数据块拆分及归类的示意图;
[0033]图4显示为本发明的Oracle数据库中备份数据块的重复数据删除系统的结构示意图。
[0034]元件标号说明
[0035]I 初始导出模块
[0036]2 初始拆分模块
[0037]3 初始备份模块
[0038]4 再次导出模块
[0039]5 再次拆分模块
[0040]6 再次备份模块
【具体实施方式】
[0041]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0042]需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0043]本发明的Oracle数据库中备份数据块的重复数据删除方法及系统,无需依赖于脚本即可提取出Oracle数据库中备份数据块中的重复数据,从数据块级层面保证增量数据最大程度的相似性,通过删除重复数据来减少磁盘上冗余数据,从而降低了磁盘占用空间,减少了网络传输。
[0044]如图1所示,本发明的Oracle数据库中备份数据块的重复数据删除方法包括以下步骤:
[0045]步骤S1、导出初始Oracle数据文件和日志文件,生成初始备份数据块。
[0046]具体地,通过RMAN脚本导出Oracle数据文件和日志文件,生成RMAN数据块。RMAN能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件等等。
[0047]步骤S2、将初始备份数据块拆分为块头和数据体。
[0048]其中,拆分是指将数据块进行切片的过程。如图2所示,将每个RMAN数据块可以拆分为块头(head块)和数据体(body块)两部分。
[0049]步骤S3、将所有head块拼接起来得到拼接head块,生成拼接head块缓存信息,并存储拼接head块的数据和缓存信息;计算拆分后的每个body块的指纹,生成body块缓存信息,并存储body块的指纹和缓存信息。
[0050]其中,拼接head块缓存信息包括拼接head块的大小、head块的个数、存储位置等。body块缓存信息包括body块的存储位置、大小等。优选地,body块的指纹是指标识body块的唯一 ID。
[0051]如图3所示,对RMAN数据块进行拆分后,将拆分后获取的所有head块按照先后顺序依次进行拼接,得到拼接head块。后续将在拼接head块的基础上生成拼接head块缓存信息。
[0052]具体地,采用MD5算法计算body块的唯一ID,即指纹。
[0053]步骤S4、当Oracle数据库的数据文件和日志文件发生变化时,导出Oracle数据文件和日志文件,生成再次备份数据块。
[0054]步骤S5、将再次备份数据块拆分为head块和body块。
[0055]步骤S6、将所有head块拼接起来得到拼接head块,生成并存储拼接head块缓存信息;计算拆分后的每个body块的指纹,并与已存储的指纹进行比对;若比对成功,则获取并存储已存储的指纹所对应的body块缓存信息;若比对不成功,则生成body块缓存信息,并存储body数据块的指纹和缓存信息。
[0050]若比对成功,则说明为重复body块,只需获取并存储已存储的指纹所对应的body块缓存信息;若比对不成功,则说明为不重复body块,生成body块缓存信息,并存储body数据块的指纹和缓存信息。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1