一种基于Oracle数据库的数据表备份方法及装置制造方法

文档序号:6542714阅读:245来源:国知局
一种基于Oracle数据库的数据表备份方法及装置制造方法
【专利摘要】本发明公开了一种基于Oracle数据库(10g、11g版本)的数据表备份方法及装置,所述方法包括:备份信息表配置步骤,用于对所述备份信息表进行配置,其中所述备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,所述并发度对应于并行执行的备份进程的最大数目;以及备份执行步骤,根据配置后的所述备份信息表,增加对所述待备份数据表中的一个待备份数据表执行备份的所述备份进程;判断当前执行的所述备份进程的数目是否达到所述并发度,如果没有达到所述并发度,则继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程,并返回上述判断直至完成对所述待备份数据表的备份为止。该方法能够对海量数据实行高效快速的备份。
【专利说明】一种基于Oracle数据库的数据表备份方法及装置
【技术领域】
[0001]本发明涉及数据管理领域,更具体的,涉及一种基于Oracle数据库的数据表备份方法及装置。
【背景技术】
[0002]数据丢失对于大小企业来说都是个噩梦,业务数据与企业日常业务运作唇齿相依,损失这些数据,即使是暂时性的,也会威胁到企业辛苦赚来的竞争优势,更有可能摧毁公司声誉,或者可能导致昂贵的诉讼和赔偿费用。
[0003]对于惯用的Oracle数据库而言,传统的数据库备份和恢复方案有数据导出、数据热备份两种主要方式。对于数据导出方式,其利用自带EXPORT或EXPDP工具导出数据来实现数据备份,然而这类工具适用于数据量少、更新频率小、数据安全性要求不高的情况;而对于数据热备份而言,其要求数据库以归档的方式运行,通常通过Rman工具实现。
[0004]以上两种传统的备份方案,在业务数据量不大的情况下,都能达到不错的效果。但是当数据量达到一定程度时(例如几十个G以上),对于数据表个数多、数据量大的系统,这些传统的备份方案往往都会占用很长时间,显得效率低下,甚至力不从心。
[0005]由此,迫切需要一种数据备份方法,能够实现对于海量数据的备份,从而抵御数据庞大时执行备份所带来的难题,解决上述非常棘手的数据管理问题。

【发明内容】

[0006]本发明基于上述问题,提出了一种基于Oracle数据库的数据表备份方法,能够实现对于海量数据的快速备份。
[0007]为了实现上述目的,本发明一方面提供了一种基于Oracle数据库的数据表备份方法,包括:备份信息表配置步骤,用于对所述备份信息表进行配置,其中所述备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,所述并发度对应于并行执行的备份进程的最大数目;以及备份执行步骤,包括:根据配置后的所述备份信息表,增加对所述待备份数据表中的一个待备份数据表执行备份的所述备份进程;判断当前执行的所述备份进程的数目是否达到所述并发度:如果没有达到所述并发度,则继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;否则,在当前执行的所述备份进程中的一个备份进程被释放后,继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;以及返回执行上述判断直至所述待备份数据表中的所有待备份数据表均进行了备份处理为止。
[0008]优选地,所述方法可以进一步包括:检查并记录步骤,用于检查对所述待备份数据表的备份是否成功,并记录在日志中;以及备份信息表更新步骤,用于将所述待备份数据表中的每一个待备份数据表的备份状态和所述备份方式写入到所述备份信息表中。
[0009]优选地,所述备份执行步骤可以进一步包括:在完成对所述待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。[0010]优选地,所述备份执行步骤可以进一步包括:根据不同数据库用户的所述待备份数据表之间的内在关系,将所述不同数据库用户的所述待备份数据表组织为一个子系统,按所述子系统对所述待备份数据表进行备份。
[0011]优选地,当存在多个所述子系统时,可以同时进行对多个所述子系统的备份。
[0012]本发明另一方面还提供了一种基于Oracle数据库的数据表备份装置,包括:备份信息表配置模块,对所述备份信息表进行配置,其中所述备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,所述并发度对应于并行执行的备份进程的最大数目;以及备份执行模块,配置为:根据配置后的所述备份信息表,增加对所述待备份数据表中的一个待备份数据表执行备份的所述备份进程;判断当前执行的所述备份进程的数目是否达到所述并发度:如果没有达到所述并发度,则继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;否则,在当前执行的所述备份进程中的一个备份进程被释放后,继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;以及返回执行上述判断直至所述待备份数据表中的所有待备份数据表均进行了备份处理为止。
[0013]优选地,所述装置进一步包括:检查并记录模块,其配置为检查对所述待备份数据表的备份是否成功,并记录在日志中;以及备份信息表更新模块,其配置为将所述待备份数据表中的每一个待备份数据表的备份状态和所述备份方式写入到所述备份信息表中。
[0014]优选地,所述备份执行模块进一步配置为:在完成对所述待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。
[0015]优选地,所述备份执行模块进一步配置为:根据不同数据库用户的所述待备份数据表之间的内在关系,将所述不同数据库用户的所述待备份数据表组织为一个子系统,按所述子系统对所述待备份数据表进行备份,并且其中当存在多个所述子系统时,同时进行对多个所述子系统的备份。
[0016]通过对上述技术方案进行分析可知,使用本发明的备份方法及装置,其有益效果至少在于:根据配置后的所述备份信息表,不断增加备份进程直到达到并发度,并在当前备份进程被释放后,继续增加备份进程的这样一种方式,实现了数据的并发备份,大大提高了对海量数据备份的速度和效率。
【专利附图】

【附图说明】
[0017]图1是本发明实施例的一种基于Oracle数据库的数据表备份方法的流程示意图。
[0018]图2是备份后的文件清单。
[0019]图3是本发明另一实施例的基于Oracle数据库的数据表备份装置的结构示意图。【具体实施方式】
[0020]为了使本发明更加清楚明白,下面我们结合实施例,参照附图,对本发明做进一步的详细说明。
[0021]参照附图1,图1是本发明实施例的一种基于Oracle数据库的数据表备份方法的流程示意图。
[0022]首先是备份前的准备工作,即初始化。该准备工作主要包括检查系统环境、数据库版本、数据库导出方式、目录结构等信息,为后面的备份处理做准备。其中数据库导出方式,即数据库本身的备份方式(本文中为了与备份信息表中的备份方式区分,而将其称为数据库导出方式),在Oracle数据库中,依照数据库版本的不同而可能具有EXPORT导出(备份)模式或EXPDP导出(备份)模式。
[0023]接着在数据库中设置备份信息表。备份信息表中可以包括待备份数据表的名称、备份状态,备份方式,并发度参数等配置信息。并发度参数可设定为并行执行的备份进程的最大数目。备份状态是表示各待备份数据表当前的备份状态的参数,可用于表示各具体待备份数据表分别处于未备份、备份中或完成备份的状态。在后文中将提到对备份信息表更新的步骤,因此备份状态可以是实时动态更新的,也可以是基于处理节点(例如,对应某一待备份数据表的备份进程开始前、开始中、开始后)而更新。备份方式可以包括全表备份方式和分区备份方式,如果是按照时间进行分区的表,则可以设置增量备份方式和全量备份方式,以灵活的满足备份需求。
[0024]在本发明实施例中,通过基于备份信息表而进行备份处理,可以提高数据备份的效率,备份信息表全面记录了备份的重要参数,并可以重用、查询、和/或修改,跟现有技术相比,更便于实际应用。
[0025]然后生成备份及压缩脚本,根据备份信息表的配置信息,来生成数据的备份和压缩脚本。在备份执行步骤中,检查备份信息表中的备份状态,对备份状态信息进行初始化操作。通过在数据库中设置备份信息表,可以对数千张数据表进行备份、并行压缩保存,可全表备份,也可以按照分区备份。其并发度参数可根据需要进行修改。具体备份执行过程是根据配置后的备份信息表来进行的,备份信息表中包括了待备份数据表的名称、备份状态、备份方式以及并发度,因此,可以基于这些信息在后台逐条调用备份命令,每条备份命令对应于对待备份数据表中的一个待备份数据表执行备份的一个备份进程。判断当前执行的备份进程的数目是否达到并发度:如果没有达到并发度,则继续增加对待备份数据表中的下一个待备份数据表执行备份的备份进程;否则,在当前执行的备份进程中的一个备份进程被释放后,继续增加对待备份数据表中的下一个待备份数据表执行备份的备份进程;以及返回执行上述判断直至待备份数据表中的所有待备份数据表均进行了备份处理为止。
[0026]由此可见,通过不断增加备份进程直到达到并发度,并在当前备份进程被释放后,继续增加备份进程的这样一种方式,实现了数据的并发备份,大大提高了对海量数据备份的速度和效率。
[0027]优选地,在完成对待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。从而降低了所需的存储空间。通过测试表明,针对约20T数据共约2000张表进行备份时,空间使用最多不超过5T。
[0028]还可以生成备份日志。检查备份是否成功,详细记录备份日志。并且可以提供完善的出错处理机制,例如可以进一步包括备份信息表更新步骤,用于将待备份数据表中的每一个待备份数据表的备份状态和备份方式实时写入到备份信息表中,以便之后的查询以及出错处理。
[0029]在一个更优选的实施例中,上述备份执行步骤还可以进一步包括:根据不同数据库用户的待备份数据表之间的内在关系,将不同数据库用户的待备份数据表组织为一个子系统,按子系统对待备份数据表进行备份。优选地,当存在多个子系统时,同时进行对多个子系统的备份。
[0030]由此,通过上述利用待备份数据表之间的内在关系而组织子系统来进行备份的手段,对备份方式进行了创新,能够灵活地根据业务需要(体现为待备份数据表之间的内在关系)来执行备份,提高了业务处理的自动化程度,并使得备份可以更加地符合实际需要,由于可以同时对多个子系统进行备份,进一步提高了备份工作的效率。
[0031]参见附图2,表示的是根据本发明实施例的数据表备份方法所生成的文件清单。本发明的数据表备份方法基于Oracle数据库环境而实现,并利用了 Oracle数据库提供的EXPORT导出模式与EXPDP导出模式。这两种导出模式都是串行执行的模式。具体而言,通过在后台调用上述模式之一的Oracle备份命令而开启对应的一个备份进程,并利用本发明实施例的方案开启多个这样的备份进程,从而实现并发备份。本发明可以在多个数据处理类系统中得到应用,实施部署时,将相应代码部署在系统中,通过在数据库中增加相应配置表,来实施本发明的备份方法。
[0032]应用本发明实施例的备份方法,能提供海量数据及大量数据表的高效并行备份功能;可支持普通DMP模式(EXPORT)与数据泵模式(EXPDP),并可配置并发度等参数;每一张表备份完成后随即对数据文件进行并行压缩,以最低限度的使用文件系统空间;对于按照时间进行分区的表,可以设置增量备份和全量备份模式,以灵活满足备份需求。
[0033]如图3所示,本发明另一实施例还提供了一种基于Oracle数据库的数据表备份装置,该装置包括:备份信息表配置模块,对备份信息表进行配置,其中备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,并发度对应于并行执行的备份进程的最大数目;以及备份执行模块,配置为:根据配置后的备份信息表,增加对待备份数据表中的一个待备份数据表执行备份的备份进程;判断当前执行的备份进程的数目是否达到并发度:如果没有达到并发度,则继续增加对待备份数据表中的下一个待备份数据表执行备份的备份进程,并返回执行上述判断直至待备份数据表中的所有待备份数据表均进行了备份处理为止;否则,在当前执行的备份进程中的一个备份进程被释放后,继续增加对待备份数据表中的下一个待备份数据表执行备份的备份进程,并返回执行上述判断直至待备份数据表中的所有待备份数据表均进行了备份处理为止。
[0034]通过该实施例的数据表备份装置实现了数据的并发备份,大大提高了对海量数据备份的速度和效率。
[0035]优选地,该装置还可以包括检查并记录模块,其配置为检查对待备份数据表的备份是否成功,并记录在日志中;以及备份信息表更新模块(未图示),其配置为将待备份数据表中的每一个待备份数据表的备份状态和备份方式写入到备份信息表中。
[0036]在该实施例中,备份执行模块可以进一步配置为:在完成对待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。从而极大地降低了海量备份数据所要求的存储空间。
[0037]在一个优选实施例中,备份执行模块进一步配置为:根据不同数据库用户的待备份数据表之间的内在关系,将不同数据库用户的待备份数据表组织为一个子系统,按子系统对待备份数据表进行备份,并且其中当存在多个子系统时,同时进行对多个子系统的备份。由此,对备份方式进行了创新,能够灵活地根据业务需要(体现为待备份数据表之间的内在关系)来执行备份,提高了业务处理的自动化程度,并使得备份可以更加地符合实际需要,由于可以同时对多个子系统进行备份,进一步提高了对海量数据的备份的效率和速度。以上所述仅为本申请的优选实施例,对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的发明精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
【权利要求】
1.一种基于Oracle数据库的数据表备份方法,包括: 备份信息表配置步骤,用于对所述备份信息表进行配置,其中所述备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,所述并发度对应于并行执行的备份进程的最大数目;以及 备份执行步骤,包括: 根据配置后的所述备份信息表,增加对所述待备份数据表中的一个待备份数据表执行备份的所述备份进程; 判断当前执行的所述备份进程的数目是否达到所述并发度:如果没有达到所述并发度,则继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;否则,在当前执行的所述备份进程中的一个备份进程被释放后,继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;以及 返回执行上述判断直至所述待备份数据表中的所有待备份数据表均进行了备份处理为止。
2.根据权利要求1所述的方法,所述方法进一步包括: 检查并记录步骤,用于检查对所述待备份数据表的备份是否成功,并记录在日志中;以及 备份信息表更新步骤,用于将所述待备份数据表中的每一个待备份数据表的备份状态和所述备份方式写入到所述备份信息表中。
3.根据权利要求1或2 所述的方法,其中 所述备份执行步骤进一步包括:在完成对所述待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。
4.根据权利要求1或2所述的方法,其中 所述备份执行步骤进一步包括:根据不同数据库用户的所述待备份数据表之间的内在关系,将所述不同数据库用户的所述待备份数据表组织为一个子系统,按所述子系统对所述待备份数据表进行备份。
5.根据权利要求4所述的方法,其中当存在多个所述子系统时,同时进行对多个所述子系统的备份。
6.一种基于Oracle数据库的数据表备份装置,包括: 备份信息表配置模块,对所述备份信息表进行配置,其中所述备份信息表包括待备份数据表的名称、备份状态、备份方式以及并发度,所述并发度对应于并行执行的备份进程的最大数目;以及 备份执行模块,配置为:根据配置后的所述备份信息表,增加对所述待备份数据表中的一个待备份数据表执行备份的所述备份进程; 判断当前执行的所述备份进程的数目是否达到所述并发度:如果没有达到所述并发度,则继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;否则,在当前执行的所述备份进程中的一个备份进程被释放后,继续增加对所述待备份数据表中的下一个待备份数据表执行备份的所述备份进程;以及 返回执行上述判断直至所述待备份数据表中的所有待备份数据表均进行了备份处理为止。
7.根据权利要求6所述的装置,所述装置进一步包括: 检查并记录模块,其配置为检查对所述待备份数据表的备份是否成功,并记录在日志中;以及 备份信息表更新模块,其配置为将所述待备份数据表中的每一个待备份数据表的备份状态和所述备份方式写入到所述备份信息表中。
8.根据权利要求6或7所述的装置,其中 所述备份执行模块进一步配置为:在完成对所述待备份数据表中的一个待备份数据表的备份后,对备份数据进行压缩处理。
9.根据权利要求6或7所述的装置,其中 所述备份执行模块进一步配置为:根据不同数据库用户的所述待备份数据表之间的内在关系,将所述不同数据库用户的所述待备份数据表组织为一个子系统,按所述子系统对所述待备份数据表进行备份,并且其中当存在多个所述子系统时,同时进行对多个所述子系统的备 份。
【文档编号】G06F11/14GK103870600SQ201410131490
【公开日】2014年6月18日 申请日期:2014年4月2日 优先权日:2014年4月2日
【发明者】郭铸, 李伟鑫, 王作为, 闫宏宇, 姚元伟, 陈世强, 常维克, 王莉 申请人:中国银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1