專利名稱::檢測數(shù)據(jù)庫對象完整性的方法及裝置的制作方法
技術領域:
:本發(fā)明涉及數(shù)據(jù)處理
技術領域:
,尤其涉及一種檢測數(shù)據(jù)庫對象完整性的方法及裝置。
背景技術:
:數(shù)據(jù)庫是指長期儲存在計算機內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。其中包含多種對象,如table(列表)、index(索引)、database(數(shù)據(jù)庫)、procedure(存儲過程)、trigger(觸發(fā)器)等。如果這些對象存在缺失,則會對應用系統(tǒng)的正常運行帶來較大影響,如缺失index,會導致應用系統(tǒng)處理數(shù)據(jù)能力大大降低,嚴重者會導致應用系統(tǒng)處于癱瘓狀態(tài),從而導致降低電信用戶對電信運營商的可信度和運營能力。目前,造成凄t據(jù)庫對象是在實際應用中缺失的原因有以下幾種1)、需求變更的需要,需要增加或者修改數(shù)據(jù)庫中的對象,由于數(shù)據(jù)庫應用系統(tǒng)開發(fā)者的疏忽,在數(shù)據(jù)庫升級腳本中遺漏部分對象或者對象增加方法不正確,造成應用系統(tǒng)數(shù)據(jù)庫系統(tǒng)中對象的缺失。這種情況產(chǎn)生的主要原因是數(shù)據(jù)庫應用系統(tǒng)開發(fā)者沒有經(jīng)過系統(tǒng)升級測試而導致。2)、升級工程實施者的疏忽或者本身業(yè)務能力有限,在數(shù)據(jù)庫升級時遺漏升級腳本或者升級方法不正確,從而造成應用系統(tǒng)數(shù)據(jù)庫系統(tǒng)中對象的缺失。這種情況往往出現(xiàn)在數(shù)據(jù)庫升級時升級腳本過多,而升級工程的實施者責任心不夠,升級后沒有進行全面的系統(tǒng)測試造成的。有些對象的缺失只有在數(shù)據(jù)庫繁忙時才能體現(xiàn)出,而通訊軟件的數(shù)據(jù)庫升級一般選擇在話務量低的時候,因此升級后的進行測試,由于這時候數(shù)據(jù)庫比較空閑,無法發(fā)現(xiàn)對象的缺失,而當白天話務量上來后,由于某些對象的缺失,如index的缺失,導致翁:據(jù)庫性能降低,從而釀成質(zhì)量事故。在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術中至少存在如下問題現(xiàn)有技術中4還不能夠較好的解決防止數(shù)據(jù)庫對象缺失的問題。
發(fā)明內(nèi)容為了解決上述問題,本發(fā)明的實施例的目的是提供一種檢測數(shù)據(jù)庫對象完整性的方法及裝置,可有效避免因數(shù)據(jù)庫對象缺失而給通訊系統(tǒng)正常運行帶來的問題。為了解決上述問題,本發(fā)明的實施例提供一種檢測數(shù)據(jù)庫對象完整性的方法,包括從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;若第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同,將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。優(yōu)選地,所述方法還包括在被檢測數(shù)據(jù)庫中建立多個臨時存儲數(shù)據(jù)的數(shù)據(jù)表;將第一數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱和特征形成SQL語句,并存放在所述數(shù)據(jù)表中。優(yōu)選地,所述方法還包括將第二數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱和特征形成SQL語句,并存放在所述數(shù)據(jù)表中。優(yōu)選地,所述方法還包括將所述缺失數(shù)據(jù)庫對象存放到所述數(shù)據(jù)表中。本發(fā)明的實施例還提供一種檢測數(shù)據(jù)庫對象完整性的裝置,包括數(shù)據(jù)庫完整對象提取模塊,用于從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;被檢測數(shù)據(jù)庫對象提取模塊,用于從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;數(shù)據(jù)庫對象比較模塊,用于比較所述數(shù)據(jù)庫完整對象提取模塊提取的所述第一數(shù)據(jù)庫對象集和所述被檢測數(shù)據(jù)庫對象提取模塊提取的所述第二數(shù)據(jù)庫對象集,并得到比較結果;數(shù)據(jù)庫對象更新模塊,在所述數(shù)據(jù)庫對象比較才莫塊的比較結果為第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同時,用于將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被4全測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。優(yōu)選地,所述裝置還包括初始化模塊,用于在凈皮檢測數(shù)據(jù)庫中建立多個用于存放數(shù)據(jù)庫對象的數(shù)據(jù)表。上述技術方案中的至少一個技術方案具有如下有益效果通過對被檢測凄史據(jù)庫中的對象進行檢測,可檢測出被檢測數(shù)據(jù)庫是否缺失對象,使得數(shù)據(jù)庫工程的實施者可通過數(shù)據(jù)庫恢復等方法提前解決數(shù)據(jù)庫對象缺失的問題,保證數(shù)據(jù)庫系統(tǒng)的正常運行,提高了產(chǎn)品的工程質(zhì)量。圖1為本發(fā)明的實施例中檢測數(shù)據(jù)庫對象完整性的方法流程圖;圖2為本發(fā)明的實施例中檢測數(shù)據(jù)庫對象完整性的裝置框圖;圖3為本發(fā)明的實施例中數(shù)據(jù)庫對象完整性檢測網(wǎng)絡連接示意圖。具體實施例方式本發(fā)明的實施例提供一種4全測數(shù)據(jù)庫對象完整性的方法,首先,從被檢測數(shù)據(jù)庫的建庫初始化腳本中提取被檢測數(shù)據(jù)庫完整的數(shù)據(jù)庫對象集(第一數(shù)據(jù)庫對象集),然后再從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取被檢測數(shù)據(jù)庫當前所有的數(shù)據(jù)庫對象集(第二數(shù)據(jù)庫對象集),當?shù)谝粩?shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同時,則將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象更新到被檢測數(shù)據(jù)庫中,使得被檢測數(shù)據(jù)庫中的數(shù)據(jù)庫對象保持完整,從而有效避免了因數(shù)據(jù)庫對象缺失而給通訊系統(tǒng)正常運行帶來的問題。為了使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚明白,下面結合實施例和附圖,對本發(fā)明實施例〗故進一步詳細地說明。在此,本發(fā)明的示意性實施例及說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。如圖l所示,為本發(fā)明的實施例中檢測數(shù)據(jù)庫對象完整性的方法流程圖,具體包括以下步驟步驟101、在被;險測數(shù)據(jù)庫中建立多個用于存放數(shù)據(jù)庫對象的數(shù)據(jù)表;也就是,在被檢測的數(shù)據(jù)庫中初始化多個本實施例需要用到的臨時存儲數(shù)據(jù)用的數(shù)據(jù)表,該數(shù)據(jù)表可用于存放經(jīng)過處理后得到的缺失數(shù)據(jù)庫對象,以及被檢測數(shù)據(jù)庫應該有的完整的數(shù)據(jù)庫對象集,該數(shù)據(jù)庫對象集包括至少一個數(shù)據(jù)庫對象。步驟102、從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;在本實施例中,每個被檢測數(shù)據(jù)庫都有一個完整的數(shù)據(jù)庫初始化的腳本,步驟102就是從這個腳本中提取被檢測數(shù)據(jù)庫中應該有的完整的數(shù)據(jù)庫對象集,并將該數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱(例如table、index等)及數(shù)據(jù)庫對象的特征(例如索引的類別(簇索引、唯一索引、非唯一索引)、字段是否非空、索引字段等等)形成SQL(結構化查詢語言)語句存放在步驟101中建立的臨時數(shù)據(jù)表中,并形成一個可執(zhí)行的SQL語句腳本文件,在本實施例中,該提取的表索引情況的語句為insertintodistill—indexesvalues('索引名稱','索引所在的表名','索引字段名',索引類別),其中distill—indexes就是步驟101建立的提取數(shù)據(jù)庫索引的臨時的數(shù)據(jù)表。將形成的SQL語句腳本到被檢測的數(shù)據(jù)庫中執(zhí)行,目的是在被檢測數(shù)據(jù)庫中將完整的數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象記錄存放于多個臨時的數(shù)據(jù)表中,并可將第一數(shù)據(jù)庫對象集命名為ObjectAll。步驟103、從被^r測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;由于在任何類型的數(shù)據(jù)庫的系統(tǒng)庫中,都會有存放被檢測數(shù)據(jù)庫所有對象的數(shù)據(jù)字典,步驟103也就是從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取被檢測數(shù)據(jù)庫所有的完整的數(shù)據(jù)庫對象集,并將該數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱及特征存放在步驟101中的多個臨時的數(shù)據(jù)表中,并可將第二數(shù)據(jù)庫對象集命名為ObjectFact。步驟104、判斷第一數(shù)據(jù)對象集是否與第二數(shù)據(jù)庫對象集相同,若是,則可停止執(zhí)行方法流程,否則,執(zhí)行步驟105;也就是將ObjectAll與ObjectFact進行比較,找出ObjectAll中有而ObjectFact沒有的缺失數(shù)據(jù)庫對象,并將這些缺失數(shù)據(jù)庫對象記錄在步驟101設置的多個臨時數(shù)據(jù)表中。這些缺失數(shù)據(jù)庫對象可命名為Objectless。在Objectless中所有的對象記錄就是我們要找的被檢測數(shù)據(jù)庫缺少的對象數(shù)據(jù)集,并將這個對象數(shù)據(jù)集形成文本文件。步驟105、將缺失數(shù)據(jù)庫對象更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。也就是,從Objectless中導出的被檢測數(shù)據(jù)庫缺失的對象文本文件,與完整的數(shù)據(jù)庫初始化的腳本進行比對,進而達到對被檢測數(shù)據(jù)庫進行對象進行修復的目的。由上述技術方案可知,通過對被檢測數(shù)據(jù)庫中的對象進行檢測,可檢測出被檢測數(shù)據(jù)庫是否缺失對象,使得數(shù)據(jù)庫工程的實施者可通過數(shù)據(jù)庫恢復等方法提前解決數(shù)據(jù)庫對象缺失的問題,保證數(shù)據(jù)庫系統(tǒng)的正常運行,提高了產(chǎn)品的工程質(zhì)量。為了實現(xiàn)上述的方法實施例,本發(fā)明的其他實施例還提供了一種檢測數(shù)據(jù)庫對象完整性的裝置。另需首先說明的是,由于下述的實施例是為實現(xiàn)前述的方法實施例,故該裝置都是為了實現(xiàn)前述方法的各步驟而設,但本發(fā)明并不限于下述的實施例,任何可實現(xiàn)上述方法裝置都應包含于本發(fā)明的保護范圍。并且在下面的描述中,與前述方法相同的內(nèi)容在此省略,以節(jié)約篇幅。如圖2所示,為本發(fā)明的實施例中檢測數(shù)據(jù)庫對象完整性的裝置框圖,該裝置20包括初始化模塊21,用于在被檢測數(shù)據(jù)庫中建立多個用于存放數(shù)據(jù)庫對象的數(shù)據(jù)表;數(shù)據(jù)庫完整對象提取模塊22,用于從被;險測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;每個商用數(shù)據(jù)庫都有一個完整的數(shù)據(jù)庫初始化的腳本,該數(shù)據(jù)庫完整對象提取模塊22用于從這個腳本中提取被檢測數(shù)據(jù)庫中應該有的完整的數(shù)據(jù)庫對象,并將該數(shù)據(jù)庫對象的名稱及對象的特征形成以SQL語句存放在初始化模塊21建立的數(shù)據(jù)表中,形成一個可執(zhí)行的SQL語句腳本文件。并將形成的SQL語句腳本到被檢測的商用數(shù)據(jù)庫中執(zhí)行,目的是在商用數(shù)據(jù)庫中將完整的數(shù)據(jù)庫對象記錄存放于初始化模塊21中建立的若干臨時數(shù)據(jù)表中,這些臨時對象可命名為ObjectAll。被檢測數(shù)據(jù)庫對象提取模塊23,用于從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;在任何類型的數(shù)據(jù)庫的系統(tǒng)庫中,都會有存^:當前數(shù)據(jù)庫所有數(shù)據(jù)庫對象的數(shù)據(jù)字典,該被檢測數(shù)據(jù)庫對象提取模塊23就是從當前數(shù)據(jù)庫的數(shù)據(jù)字典中提取當前數(shù)據(jù)庫所有數(shù)據(jù)庫對象,并將這些數(shù)據(jù)庫對象名稱及其特征存放初始化模塊21建立的若干臨時對象中,這些臨時對象在本發(fā)明中命名為ObjectFact。數(shù)據(jù)庫對象比較模塊24,用于比較所述數(shù)據(jù)庫完整對象提取模塊21提取的所述第一數(shù)據(jù)庫對象集和所述被檢測數(shù)據(jù)庫對象提^^莫塊22提取的所述第二數(shù)據(jù)庫對象集,并得到比較結果;數(shù)據(jù)庫對象比較模塊24主要用于將ObjectAll與ObjectFact進行比較,找出ObjectAll中有而ObjectFact沒有的對象,并將這些對象記錄在初始化模塊21中建立的若干臨時對象中。這些臨時對象在實施例中命名為Objectless。在Objectless中所有的對象記錄就是我們要找的商用數(shù)據(jù)庫缺少的對象數(shù)據(jù)集,并將這個對象數(shù)據(jù)集形成文本文件。數(shù)據(jù)庫對象更新模塊25,在所述數(shù)據(jù)庫對象比較模塊24的比較結果為第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同時,用于將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。數(shù)據(jù)庫對象更新模塊25根據(jù)從Objectless中導出的商用數(shù)據(jù)庫缺失的對象文本文件,與完整的數(shù)據(jù)庫初始化的腳本進行比對,進而達到對商用數(shù)據(jù)庫進行對象進行修復的目的。參見圖3,本實施例主要涉及數(shù)據(jù)庫接入環(huán)境和商用數(shù)據(jù)庫(被檢測數(shù)據(jù)庫)環(huán)境,其中數(shù)據(jù)庫接入環(huán)境一般情況可以為一臺PC(個人電腦)計算機,該PC計算機上需要安裝商用數(shù)據(jù)庫的客戶端,并建立與商用數(shù)據(jù)庫的客戶端連接服務。在數(shù)據(jù)庫接入環(huán)境上有數(shù)據(jù)庫建庫腳本、數(shù)據(jù)庫完整對象提取模塊、數(shù)據(jù)庫對象更新模塊等,在本發(fā)明處理過程中,數(shù)據(jù)庫完整對象提取模塊會產(chǎn)生被檢測數(shù)據(jù)庫完整對象數(shù)據(jù)腳本,數(shù)據(jù)庫對象比較模塊會在將產(chǎn)生商用數(shù)據(jù)庫缺失對象文件發(fā)送到數(shù)據(jù)庫接入環(huán)境中。而商用數(shù)據(jù)庫環(huán)境則主要有初始化模塊、商用數(shù)據(jù)庫、被檢測數(shù)據(jù)庫對象提取模塊和數(shù)據(jù)庫對象比較模塊等,這些模塊間的關系不再描述,在上面的篇幅中已經(jīng)做了詳細的介紹。以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本
技術領域:
的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。10權利要求1.一種檢測數(shù)據(jù)庫對象完整性的方法,其特征在于,包括從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;若第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同,將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。2.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括在被檢測數(shù)據(jù)庫中建立多個臨時存儲數(shù)據(jù)的數(shù)據(jù)表;將第一數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱和特征形成SQL語句,并存放在所述數(shù)據(jù)表中。3.根據(jù)權利要求2所述的方法,其特征在于,所述方法還'包括將第二數(shù)據(jù)庫對象集中的數(shù)據(jù)庫對象的名稱和特征形成SQL語句,并存放在所述數(shù)據(jù)表中。4.根據(jù)權利要求2所述的方法,其特征在于,所述方法還包括將所述缺失數(shù)據(jù)庫對象存放到所述數(shù)據(jù)表中。5.—種檢測數(shù)據(jù)庫對象完整性的裝置,其特征在于,包括數(shù)據(jù)庫完整對象提取模塊,用于從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;被檢測數(shù)據(jù)庫對象提取模塊,用于從被^r測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;數(shù)據(jù)庫對象比較模塊,用于比較所述數(shù)據(jù)庫完整對象提取模塊提取的所述第一數(shù)據(jù)庫對象集和所述被檢測數(shù)據(jù)庫對象提取模塊提取的所述第二數(shù)據(jù)庫對象集,并得到比較結果;數(shù)據(jù)庫對象更新模塊,在所述數(shù)據(jù)庫對象比較模塊的比較結果為第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同時,用于將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中。6.根據(jù)權利要求5所述的裝置,其特征在于,所述裝置還包括初始化模塊,用于在被檢測數(shù)據(jù)庫中建立多個用于存放數(shù)據(jù)庫對象的數(shù)據(jù)表。全文摘要本發(fā)明提供一種檢測數(shù)據(jù)庫對象完整性的方法及裝置,屬于數(shù)據(jù)處理
技術領域:
,該方法包括從被檢測數(shù)據(jù)庫的建庫初始化的腳本中提取包括被檢測數(shù)據(jù)庫中完整的數(shù)據(jù)庫對象的第一數(shù)據(jù)庫對象集;從被檢測數(shù)據(jù)庫的數(shù)據(jù)字典中提取包括被檢測數(shù)據(jù)庫中所有數(shù)據(jù)庫對象的第二數(shù)據(jù)庫對象集;若第一數(shù)據(jù)庫對象集與第二數(shù)據(jù)庫對象集不相同,將第一數(shù)據(jù)庫對象集中有而第二數(shù)據(jù)庫對象集中沒有的缺失數(shù)據(jù)庫對象,更新到被檢測數(shù)據(jù)庫的第二數(shù)據(jù)庫對象集中,可有效避免因數(shù)據(jù)庫對象缺失而給通訊系統(tǒng)正常運行帶來的問題。文檔編號G06F17/30GK101676908SQ200810222350公開日2010年3月24日申請日期2008年9月17日優(yōu)先權日2008年9月17日發(fā)明者李良生,陳虹橋申請人:中興通訊股份有限公司