检测数据库对象完整性的方法及装置的制作方法

文档序号:6470736阅读:153来源:国知局

专利名称::检测数据库对象完整性的方法及装置的制作方法
技术领域
:本发明涉及数据处理
技术领域
,尤其涉及一种检测数据库对象完整性的方法及装置。
背景技术
:数据库是指长期储存在计算机内的、有组织的、可共享的数据集合。其中包含多种对象,如table(列表)、index(索引)、database(数据库)、procedure(存储过程)、trigger(触发器)等。如果这些对象存在缺失,则会对应用系统的正常运行带来较大影响,如缺失index,会导致应用系统处理数据能力大大降低,严重者会导致应用系统处于瘫痪状态,从而导致降低电信用户对电信运营商的可信度和运营能力。目前,造成凄t据库对象是在实际应用中缺失的原因有以下几种1)、需求变更的需要,需要增加或者修改数据库中的对象,由于数据库应用系统开发者的疏忽,在数据库升级脚本中遗漏部分对象或者对象增加方法不正确,造成应用系统数据库系统中对象的缺失。这种情况产生的主要原因是数据库应用系统开发者没有经过系统升级测试而导致。2)、升级工程实施者的疏忽或者本身业务能力有限,在数据库升级时遗漏升级脚本或者升级方法不正确,从而造成应用系统数据库系统中对象的缺失。这种情况往往出现在数据库升级时升级脚本过多,而升级工程的实施者责任心不够,升级后没有进行全面的系统测试造成的。有些对象的缺失只有在数据库繁忙时才能体现出,而通讯软件的数据库升级一般选择在话务量低的时候,因此升级后的进行测试,由于这时候数据库比较空闲,无法发现对象的缺失,而当白天话务量上来后,由于某些对象的缺失,如index的缺失,导致翁:据库性能降低,从而酿成质量事故。在实现本发明的过程中,发现现有技术中至少存在如下问题现有技术中4还不能够较好的解决防止数据库对象缺失的问题。
发明内容为了解决上述问题,本发明的实施例的目的是提供一种检测数据库对象完整性的方法及装置,可有效避免因数据库对象缺失而给通讯系统正常运行带来的问题。为了解决上述问题,本发明的实施例提供一种检测数据库对象完整性的方法,包括从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;从被检测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;若第一数据库对象集与第二数据库对象集不相同,将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被检测数据库的第二数据库对象集中。优选地,所述方法还包括在被检测数据库中建立多个临时存储数据的数据表;将第一数据库对象集中的数据库对象的名称和特征形成SQL语句,并存放在所述数据表中。优选地,所述方法还包括将第二数据库对象集中的数据库对象的名称和特征形成SQL语句,并存放在所述数据表中。优选地,所述方法还包括将所述缺失数据库对象存放到所述数据表中。本发明的实施例还提供一种检测数据库对象完整性的装置,包括数据库完整对象提取模块,用于从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;被检测数据库对象提取模块,用于从被检测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;数据库对象比较模块,用于比较所述数据库完整对象提取模块提取的所述第一数据库对象集和所述被检测数据库对象提取模块提取的所述第二数据库对象集,并得到比较结果;数据库对象更新模块,在所述数据库对象比较才莫块的比较结果为第一数据库对象集与第二数据库对象集不相同时,用于将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被4全测数据库的第二数据库对象集中。优选地,所述装置还包括初始化模块,用于在净皮检测数据库中建立多个用于存放数据库对象的数据表。上述技术方案中的至少一个技术方案具有如下有益效果通过对被检测凄史据库中的对象进行检测,可检测出被检测数据库是否缺失对象,使得数据库工程的实施者可通过数据库恢复等方法提前解决数据库对象缺失的问题,保证数据库系统的正常运行,提高了产品的工程质量。图1为本发明的实施例中检测数据库对象完整性的方法流程图;图2为本发明的实施例中检测数据库对象完整性的装置框图;图3为本发明的实施例中数据库对象完整性检测网络连接示意图。具体实施例方式本发明的实施例提供一种4全测数据库对象完整性的方法,首先,从被检测数据库的建库初始化脚本中提取被检测数据库完整的数据库对象集(第一数据库对象集),然后再从被检测数据库的数据字典中提取被检测数据库当前所有的数据库对象集(第二数据库对象集),当第一数据库对象集与第二数据库对象集不相同时,则将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象更新到被检测数据库中,使得被检测数据库中的数据库对象保持完整,从而有效避免了因数据库对象缺失而给通讯系统正常运行带来的问题。为了使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明实施例〗故进一步详细地说明。在此,本发明的示意性实施例及说明用于解释本发明,但并不作为对本发明的限定。如图l所示,为本发明的实施例中检测数据库对象完整性的方法流程图,具体包括以下步骤步骤101、在被;险测数据库中建立多个用于存放数据库对象的数据表;也就是,在被检测的数据库中初始化多个本实施例需要用到的临时存储数据用的数据表,该数据表可用于存放经过处理后得到的缺失数据库对象,以及被检测数据库应该有的完整的数据库对象集,该数据库对象集包括至少一个数据库对象。步骤102、从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;在本实施例中,每个被检测数据库都有一个完整的数据库初始化的脚本,步骤102就是从这个脚本中提取被检测数据库中应该有的完整的数据库对象集,并将该数据库对象集中的数据库对象的名称(例如table、index等)及数据库对象的特征(例如索引的类别(簇索引、唯一索引、非唯一索引)、字段是否非空、索引字段等等)形成SQL(结构化查询语言)语句存放在步骤101中建立的临时数据表中,并形成一个可执行的SQL语句脚本文件,在本实施例中,该提取的表索引情况的语句为insertintodistill—indexesvalues('索引名称','索引所在的表名','索引字段名',索引类别),其中distill—indexes就是步骤101建立的提取数据库索引的临时的数据表。将形成的SQL语句脚本到被检测的数据库中执行,目的是在被检测数据库中将完整的数据库对象集中的数据库对象记录存放于多个临时的数据表中,并可将第一数据库对象集命名为ObjectAll。步骤103、从被^r测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;由于在任何类型的数据库的系统库中,都会有存放被检测数据库所有对象的数据字典,步骤103也就是从被检测数据库的数据字典中提取被检测数据库所有的完整的数据库对象集,并将该数据库对象集中的数据库对象的名称及特征存放在步骤101中的多个临时的数据表中,并可将第二数据库对象集命名为ObjectFact。步骤104、判断第一数据对象集是否与第二数据库对象集相同,若是,则可停止执行方法流程,否则,执行步骤105;也就是将ObjectAll与ObjectFact进行比较,找出ObjectAll中有而ObjectFact没有的缺失数据库对象,并将这些缺失数据库对象记录在步骤101设置的多个临时数据表中。这些缺失数据库对象可命名为Objectless。在Objectless中所有的对象记录就是我们要找的被检测数据库缺少的对象数据集,并将这个对象数据集形成文本文件。步骤105、将缺失数据库对象更新到被检测数据库的第二数据库对象集中。也就是,从Objectless中导出的被检测数据库缺失的对象文本文件,与完整的数据库初始化的脚本进行比对,进而达到对被检测数据库进行对象进行修复的目的。由上述技术方案可知,通过对被检测数据库中的对象进行检测,可检测出被检测数据库是否缺失对象,使得数据库工程的实施者可通过数据库恢复等方法提前解决数据库对象缺失的问题,保证数据库系统的正常运行,提高了产品的工程质量。为了实现上述的方法实施例,本发明的其他实施例还提供了一种检测数据库对象完整性的装置。另需首先说明的是,由于下述的实施例是为实现前述的方法实施例,故该装置都是为了实现前述方法的各步骤而设,但本发明并不限于下述的实施例,任何可实现上述方法装置都应包含于本发明的保护范围。并且在下面的描述中,与前述方法相同的内容在此省略,以节约篇幅。如图2所示,为本发明的实施例中检测数据库对象完整性的装置框图,该装置20包括初始化模块21,用于在被检测数据库中建立多个用于存放数据库对象的数据表;数据库完整对象提取模块22,用于从被;险测数据库的建库初始化的脚本中提取包括被检测数据库中完整数据库对象的第一数据库对象集;每个商用数据库都有一个完整的数据库初始化的脚本,该数据库完整对象提取模块22用于从这个脚本中提取被检测数据库中应该有的完整的数据库对象,并将该数据库对象的名称及对象的特征形成以SQL语句存放在初始化模块21建立的数据表中,形成一个可执行的SQL语句脚本文件。并将形成的SQL语句脚本到被检测的商用数据库中执行,目的是在商用数据库中将完整的数据库对象记录存放于初始化模块21中建立的若干临时数据表中,这些临时对象可命名为ObjectAll。被检测数据库对象提取模块23,用于从被检测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;在任何类型的数据库的系统库中,都会有存^:当前数据库所有数据库对象的数据字典,该被检测数据库对象提取模块23就是从当前数据库的数据字典中提取当前数据库所有数据库对象,并将这些数据库对象名称及其特征存放初始化模块21建立的若干临时对象中,这些临时对象在本发明中命名为ObjectFact。数据库对象比较模块24,用于比较所述数据库完整对象提取模块21提取的所述第一数据库对象集和所述被检测数据库对象提^^莫块22提取的所述第二数据库对象集,并得到比较结果;数据库对象比较模块24主要用于将ObjectAll与ObjectFact进行比较,找出ObjectAll中有而ObjectFact没有的对象,并将这些对象记录在初始化模块21中建立的若干临时对象中。这些临时对象在实施例中命名为Objectless。在Objectless中所有的对象记录就是我们要找的商用数据库缺少的对象数据集,并将这个对象数据集形成文本文件。数据库对象更新模块25,在所述数据库对象比较模块24的比较结果为第一数据库对象集与第二数据库对象集不相同时,用于将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被检测数据库的第二数据库对象集中。数据库对象更新模块25根据从Objectless中导出的商用数据库缺失的对象文本文件,与完整的数据库初始化的脚本进行比对,进而达到对商用数据库进行对象进行修复的目的。参见图3,本实施例主要涉及数据库接入环境和商用数据库(被检测数据库)环境,其中数据库接入环境一般情况可以为一台PC(个人电脑)计算机,该PC计算机上需要安装商用数据库的客户端,并建立与商用数据库的客户端连接服务。在数据库接入环境上有数据库建库脚本、数据库完整对象提取模块、数据库对象更新模块等,在本发明处理过程中,数据库完整对象提取模块会产生被检测数据库完整对象数据脚本,数据库对象比较模块会在将产生商用数据库缺失对象文件发送到数据库接入环境中。而商用数据库环境则主要有初始化模块、商用数据库、被检测数据库对象提取模块和数据库对象比较模块等,这些模块间的关系不再描述,在上面的篇幅中已经做了详细的介绍。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。10权利要求1.一种检测数据库对象完整性的方法,其特征在于,包括从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;从被检测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;若第一数据库对象集与第二数据库对象集不相同,将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被检测数据库的第二数据库对象集中。2.根据权利要求1所述的方法,其特征在于,所述方法还包括在被检测数据库中建立多个临时存储数据的数据表;将第一数据库对象集中的数据库对象的名称和特征形成SQL语句,并存放在所述数据表中。3.根据权利要求2所述的方法,其特征在于,所述方法还'包括将第二数据库对象集中的数据库对象的名称和特征形成SQL语句,并存放在所述数据表中。4.根据权利要求2所述的方法,其特征在于,所述方法还包括将所述缺失数据库对象存放到所述数据表中。5.—种检测数据库对象完整性的装置,其特征在于,包括数据库完整对象提取模块,用于从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;被检测数据库对象提取模块,用于从被^r测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;数据库对象比较模块,用于比较所述数据库完整对象提取模块提取的所述第一数据库对象集和所述被检测数据库对象提取模块提取的所述第二数据库对象集,并得到比较结果;数据库对象更新模块,在所述数据库对象比较模块的比较结果为第一数据库对象集与第二数据库对象集不相同时,用于将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被检测数据库的第二数据库对象集中。6.根据权利要求5所述的装置,其特征在于,所述装置还包括初始化模块,用于在被检测数据库中建立多个用于存放数据库对象的数据表。全文摘要本发明提供一种检测数据库对象完整性的方法及装置,属于数据处理
技术领域
,该方法包括从被检测数据库的建库初始化的脚本中提取包括被检测数据库中完整的数据库对象的第一数据库对象集;从被检测数据库的数据字典中提取包括被检测数据库中所有数据库对象的第二数据库对象集;若第一数据库对象集与第二数据库对象集不相同,将第一数据库对象集中有而第二数据库对象集中没有的缺失数据库对象,更新到被检测数据库的第二数据库对象集中,可有效避免因数据库对象缺失而给通讯系统正常运行带来的问题。文档编号G06F17/30GK101676908SQ200810222350公开日2010年3月24日申请日期2008年9月17日优先权日2008年9月17日发明者李良生,陈虹桥申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1