專利名稱:恢復(fù)數(shù)據(jù)庫(kù)時(shí)并行讀取主從備份的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用備份拷貝和變化累積數(shù)據(jù)集進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。具體地說(shuō),本發(fā)明涉及用完整或不完整的變化積累數(shù)據(jù)集進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。
對(duì)大量數(shù)據(jù)庫(kù)的管理在現(xiàn)代社會(huì)有著永恒的重要性,現(xiàn)代社會(huì)依賴于反應(yīng)關(guān)鍵信息的數(shù)據(jù)的可靠存儲(chǔ)。一般地,對(duì)用戶來(lái)說(shuō),數(shù)據(jù)庫(kù)必須是持續(xù)可操作和可用的。當(dāng)今數(shù)據(jù)庫(kù)系統(tǒng)基本上是堅(jiān)固的,它們不經(jīng)常經(jīng)歷故障。然而,在故障出現(xiàn)時(shí),必須能有效且精確地進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),以使用戶的損失減至最少。因此,數(shù)據(jù)庫(kù)恢復(fù)是必須能迅速執(zhí)行的一項(xiàng)操作,以便使用戶的停機(jī)時(shí)間減至最少。經(jīng)歷長(zhǎng)時(shí)間的停機(jī)的數(shù)據(jù)庫(kù)會(huì)很快地導(dǎo)致經(jīng)濟(jì)災(zāi)難。
數(shù)據(jù)庫(kù)由復(fù)雜的數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行管理。數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)實(shí)例是可從紐約Armonk的IBM公司買到的信息管理系統(tǒng)(IMS)。IMS系統(tǒng)目前在操作上用來(lái)服務(wù)于大量的數(shù)據(jù)庫(kù)。IMS系統(tǒng)允許訪問(wèn)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)以使用戶與保存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)相交互,多數(shù)用戶的存取涉及事務(wù)操作。
當(dāng)用戶更新數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)數(shù)據(jù)集時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)將更新記錄進(jìn)日志數(shù)據(jù)集。日志數(shù)據(jù)集是諸如文件之類的大量數(shù)據(jù),這些數(shù)據(jù)反映了對(duì)數(shù)據(jù)庫(kù)的一系列更新。日志數(shù)據(jù)集被記錄,到定義了起點(diǎn)和終點(diǎn)的順序記錄。
用戶可周期性地作數(shù)據(jù)庫(kù)的備份拷貝或系列備份拷貝,以便幫助恢復(fù)數(shù)據(jù)庫(kù)。這些備份拷貝可由磁帶管理系統(tǒng)記錄在磁帶檔案上。備份拷貝用作將數(shù)據(jù)庫(kù)恢復(fù)成數(shù)據(jù)庫(kù)出故障之前的狀態(tài)的基礎(chǔ)。在恢復(fù)時(shí),根據(jù)日志數(shù)據(jù)集的記錄對(duì)數(shù)據(jù)庫(kù)進(jìn)行隨后的更新?;謴?fù)還需要將數(shù)據(jù)庫(kù)和備份的屬性存儲(chǔ)起來(lái)。數(shù)據(jù)庫(kù)管理系統(tǒng)通常包括用于對(duì)恢復(fù)進(jìn)行控制的數(shù)據(jù)集,該數(shù)據(jù)集包括以和備份拷貝的多種屬性。數(shù)據(jù)庫(kù)管理系統(tǒng)使用記錄在該數(shù)據(jù)集中與數(shù)據(jù)庫(kù)和備份拷貝相關(guān)的某種形式的恢復(fù)控制信息,以幫助進(jìn)行恢復(fù)。
數(shù)據(jù)庫(kù)管理系統(tǒng)包括恢復(fù)工具以便對(duì)數(shù)據(jù)庫(kù)故障進(jìn)行響應(yīng)。在數(shù)據(jù)庫(kù)發(fā)生故障時(shí),恢復(fù)工具會(huì)創(chuàng)建一新的數(shù)據(jù)庫(kù)并將備份拷貝寫入新數(shù)據(jù)庫(kù)。該恢復(fù)工具還從創(chuàng)建備份拷貝的時(shí)間將所有更新都應(yīng)用到到前述數(shù)據(jù)庫(kù)。用于從備份拷貝的最后狀態(tài)恢復(fù)新數(shù)據(jù)庫(kù)的信息取自日志數(shù)據(jù)集和恢復(fù)控制信息。
為了幫助進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),本文稱為變化累積工具的工具對(duì)更新進(jìn)行累積并將它們放到變化累積數(shù)據(jù)集(CADS)內(nèi)。CADS是日志記錄中應(yīng)用到新數(shù)據(jù)庫(kù)并在數(shù)據(jù)庫(kù)恢復(fù)期間用作輸入的變化的累積。CADS可反映多于一個(gè)數(shù)據(jù)庫(kù)的更新。典型的數(shù)據(jù)庫(kù)記錄是一次更新一部分,可以有重疊的更新,這就使得恢復(fù)的次序變得很重要。CADS接收重疊的更新,但在所有變化之后,CADS僅反映出最終的變化。
為了創(chuàng)建CADS,變化累積工具順序地即一個(gè)接一個(gè)地讀取日志數(shù)據(jù)集。一般地說(shuō),用戶將他們的多個(gè)數(shù)據(jù)庫(kù)組織成變化累積組,因此,變化累積工具能盡可能有效率地進(jìn)行操作。用戶可以針對(duì)一個(gè)變化累積組運(yùn)行變化累積過(guò)程,并將一可選的輔助輸出-未被寫入變化累積數(shù)據(jù)集的成組日志記錄-用作要加以處理的下一個(gè)變化累積組的變化累積工具的輸入。對(duì)其中當(dāng)前的變化累積操作使用了前一次變化累積操作的輔助輸出的各變化累積組都這樣做。這一串行過(guò)程直接由用戶管理。用戶通常周期性地進(jìn)行變化累積,因此,當(dāng)變化累積組中數(shù)據(jù)庫(kù)數(shù)據(jù)集需要恢復(fù)時(shí),可使進(jìn)行最終變化累積作業(yè)和隨后的恢復(fù)作業(yè)所需的時(shí)間減至最少。正如所頂料的那樣,這種順序恢復(fù)過(guò)程是相當(dāng)復(fù)雜的。
該恢復(fù)工具將整個(gè)CADS讀入存儲(chǔ)器并使用該CADS中與正加以恢復(fù)的數(shù)據(jù)庫(kù)相關(guān)的那部分。每條記錄均具有一標(biāo)識(shí),它是順序的,從而順序地恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)集?;謴?fù)工具對(duì)CADS內(nèi)的每條記錄都進(jìn)行尋址,以檢查該記錄的數(shù)據(jù)是否有變化。如果是,則訪問(wèn)CADS,并將相關(guān)的記錄合并進(jìn)新數(shù)據(jù)庫(kù)。
在日常操作期間,數(shù)據(jù)庫(kù)管理系統(tǒng)周期性地在上述數(shù)據(jù)庫(kù)和日志數(shù)據(jù)集中創(chuàng)建更新。隨著時(shí)間的推移,可創(chuàng)建若干個(gè)更新。但是,更新在物理上寫入數(shù)據(jù)庫(kù)之前,更新并不永久地存儲(chǔ)在數(shù)據(jù)庫(kù)中。一般地說(shuō),數(shù)據(jù)庫(kù)活動(dòng)是以能將更新“提交”給數(shù)據(jù)庫(kù)為基礎(chǔ)的。提交點(diǎn)是更新成為數(shù)據(jù)庫(kù)永久組成部分的時(shí)間點(diǎn)。提交點(diǎn)之間的時(shí)間跨度稱為“提交范圍”或“恢復(fù)單元”(UOR)。如果出現(xiàn)錯(cuò)誤,如對(duì)數(shù)據(jù)庫(kù)的寫錯(cuò)誤從而不能更新,那么,自最后提交點(diǎn)以來(lái)產(chǎn)生的所有更新均被“放棄”。就好像從未進(jìn)行過(guò)更新。
用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新和提交點(diǎn)處理的一種方法是數(shù)據(jù)庫(kù)管理器將數(shù)據(jù)庫(kù)的變化保留在存儲(chǔ)器并不將這些變化應(yīng)用到數(shù)據(jù)庫(kù),直至達(dá)到提交點(diǎn)。在更新被建立時(shí),將變化了的數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝寫入日志。在達(dá)到提交點(diǎn)且如預(yù)期那樣一切順利,就將更新寫入數(shù)據(jù)庫(kù)。如果出現(xiàn)錯(cuò)誤,則釋放包含有數(shù)據(jù)庫(kù)更新的存儲(chǔ)器。
對(duì)數(shù)據(jù)庫(kù)的共同更新是一個(gè)事務(wù),事務(wù)是一個(gè)包括執(zhí)行多項(xiàng)活動(dòng)的操作的整體邏輯塊。在最簡(jiǎn)單的層次上,事務(wù)可包括減少一帳戶并增加另一帳戶。該事務(wù)中所執(zhí)行的活動(dòng)可超出第一提交點(diǎn)并且在后續(xù)提交點(diǎn)之前不是永久的。
變化累積工具通過(guò)獲取業(yè)已在一定提交點(diǎn)范圍內(nèi)提交的日志數(shù)據(jù)集而創(chuàng)建CADS并將它們組合起來(lái)。所提交的日志數(shù)據(jù)集能在恢復(fù)期間很容易地提供給新數(shù)據(jù)庫(kù),因?yàn)檫@些數(shù)據(jù)集是永久的。在最后被記錄的提交點(diǎn)之后出現(xiàn)的更新不能立即提供給新數(shù)據(jù)庫(kù),因?yàn)?,不能保證在以后的提交點(diǎn)提交這些更新。提交點(diǎn)出錯(cuò)會(huì)導(dǎo)致更新以及任何相關(guān)的事務(wù)放棄。如果需要放棄更新,則檢索日志記錄并使用未改變的數(shù)據(jù)庫(kù)的拷貝,以便能有效地取消改變。因此,不必將提交點(diǎn)之后出現(xiàn)的更新提交給數(shù)據(jù)庫(kù)。
每個(gè)CADS均包括一詳細(xì)記錄,該記錄是來(lái)自一個(gè)或多個(gè)日志的被提交的更新。每個(gè)詳細(xì)記錄均是一系列連續(xù)的字節(jié),這些字節(jié)可覆蓋進(jìn)一個(gè)數(shù)據(jù)庫(kù)物理記錄的備份拷貝。應(yīng)用CADS中的所有詳細(xì)記錄等價(jià)于對(duì)自從“合并結(jié)束點(diǎn)”范圍內(nèi)進(jìn)行備份拷貝以來(lái)進(jìn)入的數(shù)據(jù)庫(kù)重新運(yùn)行所有的事務(wù)。合并結(jié)束點(diǎn)是這樣的時(shí)間點(diǎn),其中,由于所有的變化記錄對(duì)更新來(lái)說(shuō)都已不可用,故這些更新不再與新數(shù)據(jù)庫(kù)相合并。因此,不能就是否已提交了這些更新作出保證。將不能與新數(shù)據(jù)庫(kù)合并的更新寫入稱為“溢出(spill)記錄”的記錄。一個(gè)完整的CADS僅包括詳細(xì)記錄,而一個(gè)不完整的CADS則包括詳細(xì)記錄和溢出記錄。在當(dāng)多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)共享一個(gè)數(shù)據(jù)庫(kù)時(shí)發(fā)生不完整的CADS的創(chuàng)建。大多數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng)以共享會(huì)話的方式運(yùn)行,以便最大限度地使用數(shù)據(jù)庫(kù)。在共享會(huì)話期間,存在有不完整的日志數(shù)據(jù)集,這些數(shù)據(jù)集帶有所有日志記錄都不可用的時(shí)間段中的更新。在多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)的共享會(huì)話中,不可能在不使數(shù)據(jù)庫(kù)離線并檢查日志數(shù)據(jù)集的情況下具有完整的CADS。
該變化累積工具不能確定不完整的日志數(shù)據(jù)集的更新記錄因?yàn)橛胁豢捎玫娜罩居涗?。該變化累積工具不能確定這些更新記錄,從而不知道是否能應(yīng)用更新。將這些更新記錄寫溢出記錄。如果相關(guān)的日志記錄變?yōu)榭捎玫?,則在后續(xù)的變化累積過(guò)程中讀取溢出記錄中的更新記錄,并且,這些記錄可與其它更新相合并。在共享會(huì)話期間,變化記錄是不完整的,因?yàn)?,?dāng)變化累積工具運(yùn)行時(shí),更新正在進(jìn)行,并且,某些變化記錄是不可用的。
在數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),終止仍在掛起的所有更新和事務(wù)。如果在數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí)未提交更新,則放棄相關(guān)的事務(wù)。在提交更新之前,更新并不是永久地用于數(shù)據(jù)庫(kù)。在恢復(fù)期間,恢復(fù)工具會(huì)判斷更新是以提交為結(jié)束還是以放棄為結(jié)束。如果更新以提交為結(jié)束,則將更新作用于新數(shù)據(jù)庫(kù)。如果以放棄為結(jié)束,則撤消更新。
共享數(shù)據(jù)庫(kù)的恢復(fù)為兩個(gè)步驟的過(guò)程。首先,恢復(fù)工具必須運(yùn)行變化累積過(guò)程以便讀取相關(guān)的日志記錄并讀取不完整CADS以創(chuàng)建完整的CADS。因?yàn)榛謴?fù)工具不能將包含在不完整CADS內(nèi)的數(shù)據(jù)與新數(shù)據(jù)庫(kù)相合并,所以需要這一步驟。因此,在本領(lǐng)域中,恢復(fù)工具不能從不完整的CADS中直接進(jìn)行恢復(fù)。必須首先完成不完整的CADS。在第二個(gè)步驟中,恢復(fù)工具應(yīng)用備份拷貝、完整的CADS和日志數(shù)據(jù)集并將進(jìn)些組成成份相合并以形成新數(shù)據(jù)庫(kù)。
在恢復(fù)過(guò)程中,完成不完整的CADS會(huì)花很長(zhǎng)時(shí)間,因?yàn)樾枰x取具有更新的所有日志數(shù)據(jù)集?;謴?fù)工具還需要讀取完整的CADS、將它們的數(shù)據(jù)與日志更新相合并、并根據(jù)備份拷貝和不包含在完整CADS內(nèi)任何可能的額外日志數(shù)據(jù)集進(jìn)行恢復(fù)。該恢復(fù)過(guò)程可以是一個(gè)非常長(zhǎng)的過(guò)程并且能向非常需要被恢復(fù)的數(shù)據(jù)庫(kù)的用戶提供最佳的結(jié)果。此外,如果用戶具有一系列數(shù)據(jù)庫(kù)并且如果有若干這樣的數(shù)據(jù)庫(kù)需要恢復(fù),則可能會(huì)存在有多個(gè)必須加以完成的不完整的CADS。完成多個(gè)不完整的CADS需要讀取多個(gè)日志數(shù)據(jù)集。一般地說(shuō),為各個(gè)不完整的CADS均順序地讀取每個(gè)日志數(shù)據(jù)集。因此,在恢復(fù)過(guò)程中必須讀取大量的數(shù)據(jù),這就可能是較長(zhǎng)的過(guò)程。
數(shù)據(jù)庫(kù)恢復(fù)需要順序地讀取各個(gè)備份拷貝和各個(gè)CADS。因此,單個(gè)數(shù)據(jù)庫(kù)的故障需要讀取各備份拷貝的時(shí)間再加上讀取各CADS的時(shí)間以及寫備份拷貝和將CADS與被恢復(fù)的數(shù)據(jù)庫(kù)合并起來(lái)的時(shí)間。該讀取時(shí)間是除完成各個(gè)不完整CADS所花費(fèi)的時(shí)間以外的時(shí)間。此外,如果需要恢復(fù)多個(gè)數(shù)據(jù)庫(kù)且這些數(shù)據(jù)庫(kù)具有單個(gè)CADS內(nèi)的數(shù)據(jù),則恢復(fù)工具對(duì)每個(gè)數(shù)據(jù)庫(kù)的恢復(fù)都讀取CADS一次。這就可能需要若干次讀取同一CADS。
因此,提供簡(jiǎn)單的能顯著減少數(shù)據(jù)庫(kù)出現(xiàn)故障之后的恢復(fù)時(shí)間的數(shù)據(jù)庫(kù)恢復(fù)設(shè)備和方法是本領(lǐng)域中的一個(gè)進(jìn)步。該方法和設(shè)備應(yīng)能同時(shí)恢復(fù)多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集。提供能消除需要執(zhí)行變化累積過(guò)程以完成不完整CADS從而減少恢復(fù)時(shí)間的數(shù)據(jù)庫(kù)恢復(fù)過(guò)程在本領(lǐng)域中也是一種進(jìn)步。消除為與需要進(jìn)行恢復(fù)的數(shù)據(jù)庫(kù)相關(guān)的各CADS順序讀取各備份拷貝和CADS在本領(lǐng)域中又是一種進(jìn)步。
以下公開并要求保護(hù)上述進(jìn)步。
本發(fā)明提供了一種恢復(fù)工具設(shè)備,用于在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集出現(xiàn)故障時(shí)加速恢復(fù)時(shí)間。本發(fā)明包括一備份拷貝恢復(fù)工具,它用于讀取和恢復(fù)需要恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集的備份拷貝。一變化累積管理器也包括在上述恢復(fù)工具設(shè)備內(nèi),以讀取一個(gè)或多個(gè)CADS中的詳細(xì)記錄。本發(fā)明還包括一日志管理器,它用于讀取一個(gè)或多個(gè)與出故障的數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)的日志。一映像拷貝恢復(fù)工具將詳細(xì)記錄和更新應(yīng)用于備份拷貝,以便形成被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。備份拷貝恢復(fù)工具并行地讀取數(shù)據(jù)庫(kù)數(shù)據(jù)集的一個(gè)或多個(gè)備份拷貝。同時(shí),變化累積管理器并行地讀取一個(gè)或多個(gè)CADS。與需要進(jìn)行恢復(fù)的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)的各CADS只需讀入存儲(chǔ)器一次。通過(guò)這種方式,并行執(zhí)行上述讀取過(guò)程會(huì)減少恢復(fù)時(shí)間。為了進(jìn)一步加快恢復(fù),在將備份拷貝寫入被恢復(fù)的數(shù)據(jù)庫(kù)時(shí),當(dāng)需要來(lái)自CADS的記錄且這些記錄變?yōu)榭捎脮r(shí),就將這些記錄與被恢復(fù)的數(shù)據(jù)庫(kù)相合并。
在共享環(huán)境中,每個(gè)CADS都是一個(gè)不完整的CDAS,從而其中有詳細(xì)記錄和溢出記錄。變化累積管理器僅讀取業(yè)已提交了的詳細(xì)記錄并忽略溢出記錄。這就會(huì)消除為進(jìn)行恢復(fù)而完成各個(gè)不完整CADS的通常耗時(shí)的過(guò)程。
日志管理器讀取一個(gè)或多個(gè)日志,以導(dǎo)出溢出記錄中的更新。這些更新在合并結(jié)束點(diǎn)之后。讀取日志可確認(rèn)溢出記錄中的哪些更新業(yè)已提交并可與恢復(fù)的數(shù)據(jù)庫(kù)相合并。并行地讀取日志以減少讀取時(shí)間,并且在完成讀取過(guò)程之前,將該日志與被恢復(fù)的數(shù)據(jù)庫(kù)相合并。
本發(fā)明的目的是并行地執(zhí)行備份拷貝、CADS和日志的讀取過(guò)程。
本發(fā)明的另一目的是在上述讀取過(guò)程中同時(shí)處理和合并數(shù)據(jù)。
本發(fā)明的再一個(gè)目的是需要單次讀取帶有用于一個(gè)以上數(shù)據(jù)庫(kù)數(shù)據(jù)集的數(shù)據(jù)的CADS。
本發(fā)明的還一個(gè)目的是能在不執(zhí)行額外變化累積工具的情況下從一個(gè)或多個(gè)不完整CADS中直接恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)集。
從以下說(shuō)明和后附權(quán)利要求中能更完全地看出本發(fā)明的上述和其它目的、特征及優(yōu)點(diǎn),或者,可以通過(guò)如以下該那樣實(shí)施本發(fā)明而了解本發(fā)明的上述和其它目的、特征及優(yōu)點(diǎn)。
為了能很容易地理解獲得本發(fā)明上述和其它優(yōu)點(diǎn)及目的,以下參照在附圖示出的本發(fā)明特定實(shí)施例更具體地說(shuō)明以上簡(jiǎn)要說(shuō)明的本發(fā)明。應(yīng)該認(rèn)識(shí)到,該附圖僅僅說(shuō)明了本發(fā)明的典型實(shí)施例,因而不應(yīng)看作是限制本發(fā)明的范圍,以下參考附圖確切并詳細(xì)地說(shuō)明及解釋本發(fā)明,附圖中
圖1是說(shuō)明計(jì)算機(jī)系統(tǒng)的實(shí)施例的示例方框圖,該計(jì)算機(jī)系統(tǒng)用于實(shí)現(xiàn)本發(fā)明的標(biāo)準(zhǔn)(format)系統(tǒng);圖2是說(shuō)明本發(fā)明一個(gè)實(shí)施例的用于恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集的組件之間通訊和互連的硬件和軟件組件的框圖;圖3是說(shuō)明本發(fā)明一個(gè)實(shí)施例的用于恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集的恢復(fù)設(shè)備的一個(gè)實(shí)施例的框圖;圖4是涉及用于恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集的設(shè)備和方法的日志時(shí)間線的圖;圖5是說(shuō)明用于恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集的方法的一個(gè)實(shí)施例的流程圖。
參照附圖可最佳地理解本發(fā)明的當(dāng)前最佳實(shí)施例,附圖中,全部都是用相同的標(biāo)號(hào)表示相同的部件??梢院苋菀椎卣J(rèn)識(shí)到,正如本文附圖中大致說(shuō)明的那樣,可按多種不同的結(jié)構(gòu)來(lái)設(shè)置和設(shè)計(jì)本發(fā)明的組件。因此,如圖1至圖5所示那樣,以下對(duì)本發(fā)明設(shè)備、系統(tǒng)和方法的實(shí)施例的詳細(xì)說(shuō)明并不是要如權(quán)利要求那樣限制本發(fā)明的范圍,而僅僅是表示本發(fā)明的當(dāng)前最佳實(shí)施例。
圖1至圖5是概略框圖和流程圖,它們?cè)敿?xì)說(shuō)明了依照本發(fā)明用于在圖1的計(jì)算機(jī)系統(tǒng)中進(jìn)行操作的硬件和軟件模塊的特定實(shí)施例。
圖1是說(shuō)明計(jì)算機(jī)系統(tǒng)10的示例方框圖,其中,按本發(fā)明操作的可執(zhí)行應(yīng)用程序位于網(wǎng)絡(luò)14內(nèi)的一個(gè)或多個(gè)計(jì)算機(jī)工作站12上。網(wǎng)絡(luò)14可包括廣域網(wǎng)(WAN),也可包括互連的網(wǎng)絡(luò)系統(tǒng),一個(gè)具體實(shí)例是因特網(wǎng)和因特網(wǎng)上支持的萬(wàn)維網(wǎng)。
典型的計(jì)算機(jī)工具站12可包括邏輯設(shè)備16并由中央處理器(CPU)、微處理器、通用可編程設(shè)備、應(yīng)用程序?qū)S玫挠布?、狀態(tài)機(jī)或其它處理機(jī)實(shí)現(xiàn)。邏輯設(shè)備16以可操作的方式與一個(gè)或多個(gè)存儲(chǔ)器設(shè)備18相連。示出的存儲(chǔ)器設(shè)備18包括諸如硬盤驅(qū)動(dòng)器、CD ROM驅(qū)動(dòng)器,磁帶驅(qū)動(dòng)器或任何其它適當(dāng)?shù)拇鎯?chǔ)設(shè)備的非易失性存儲(chǔ)設(shè)備20。存儲(chǔ)設(shè)備18還包括只讀存儲(chǔ)器(ROM)22和隨機(jī)存取易失性存儲(chǔ)器(RAM)24。RAM24可用于在執(zhí)行期間存儲(chǔ)由邏輯設(shè)備16執(zhí)行的指令。存儲(chǔ)器設(shè)備18還包括一虛擬存儲(chǔ)器25,該存儲(chǔ)器在一個(gè)實(shí)施例中是用于擴(kuò)展RAM24的非易失性存儲(chǔ)器20的一部分。
計(jì)算機(jī)系統(tǒng)10還可包括輸入設(shè)備26,它用于接收來(lái)自用戶或來(lái)自另一設(shè)備的輸入。與此相似,輸出設(shè)備28可設(shè)置在計(jì)算機(jī)系統(tǒng)10內(nèi)或者可從計(jì)算機(jī)系統(tǒng)10加以存取。諸如網(wǎng)絡(luò)接口卡30之類的網(wǎng)絡(luò)端口設(shè)置成用于通過(guò)網(wǎng)絡(luò)14與外部設(shè)備連接相連。在網(wǎng)絡(luò)14遠(yuǎn)離計(jì)算機(jī)工作站的情況下,網(wǎng)絡(luò)接口卡30可包括調(diào)制解調(diào)器并可通過(guò)諸如電話線之類的局部存取線與網(wǎng)絡(luò)14相連。
在內(nèi)部,系統(tǒng)總線32以可操作的方式與邏輯設(shè)備16、存儲(chǔ)器設(shè)備18、輸入設(shè)備26、輸出設(shè)備28、網(wǎng)卡38以及一個(gè)或多個(gè)附加端口34互連。系統(tǒng)總線32可看作是數(shù)據(jù)載體。同樣,可按多種結(jié)構(gòu)來(lái)實(shí)現(xiàn)系統(tǒng)總線32??赏瑯訉?dǎo)線、光纖線、通過(guò)可見光、紅外線和射頻的無(wú)線電磁通訊線路適當(dāng)?shù)貙?shí)現(xiàn)為系統(tǒng)總線32。
一般地說(shuō),網(wǎng)絡(luò)14可包括單個(gè)的局域網(wǎng)、廣域網(wǎng)、多個(gè)相連的網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)或諸如因特網(wǎng)之類的互連網(wǎng)絡(luò)系統(tǒng)。網(wǎng)絡(luò)14上的各個(gè)工作站12可具有不同程度和類型的通訊能力和邏輯能力??稍诰W(wǎng)絡(luò)上使用不同的通訊協(xié)議例如ISO/OSI、IPX、TCP/IP,但在因特網(wǎng)的情況下,單一的分層通訊協(xié)議(TCP/IP)在不同的網(wǎng)絡(luò)14與工作站12之間進(jìn)行通訊。
網(wǎng)絡(luò)14可包括用于將工作站12互聯(lián)起來(lái)的中樞鏈路36。可用就系統(tǒng)總線32該的任何多種結(jié)構(gòu)來(lái)實(shí)現(xiàn)中樞鏈路36。路由器38也連接于包括因特網(wǎng)40的一個(gè)或多個(gè)其它網(wǎng)絡(luò)。
工作站12通過(guò)中樞鏈路36和/或因特網(wǎng)40彼此相通訊。工作站12可包括應(yīng)用程序服務(wù)器42和/或諸如打印機(jī)、掃描儀或傳真機(jī)之類的外圍設(shè)備44。因此,一般地說(shuō),任何工作站12之間都存在著通訊鏈路。
本發(fā)明的一個(gè)方面涉及在共享或非共享環(huán)境中恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)數(shù)據(jù)集的設(shè)備。在說(shuō)明各個(gè)實(shí)施例時(shí),提及單個(gè)或多個(gè)部件并不是要將本發(fā)明僅僅限于該的結(jié)構(gòu)。
參照?qǐng)D2,框圖說(shuō)明了具有多種組件的數(shù)據(jù)庫(kù)系統(tǒng)200。數(shù)據(jù)庫(kù)系統(tǒng)200可包括一個(gè)以上的數(shù)據(jù)庫(kù)管理系統(tǒng)202。由DBMS1至DBMSN表示數(shù)據(jù)庫(kù)管理系統(tǒng)202,以表示數(shù)據(jù)庫(kù)系統(tǒng)200中的多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202。數(shù)據(jù)庫(kù)管理系統(tǒng)202可包含在圖1所示的工作站12中。適用于本發(fā)明的數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)實(shí)例是IMS。
每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202均可包括日志204,它帶有日志記錄,以跟蹤對(duì)保存在存儲(chǔ)器18或數(shù)據(jù)庫(kù)206內(nèi)的數(shù)據(jù)的更新。日志204用于跟蹤數(shù)據(jù)的變化以及相應(yīng)數(shù)據(jù)庫(kù)管理系統(tǒng)202所執(zhí)行的其它事件。變化及其它事件作為日志記錄存儲(chǔ)在日志204內(nèi)。日志204可存儲(chǔ)在工作站12的一個(gè)或多個(gè)存儲(chǔ)器設(shè)備18上。
數(shù)據(jù)庫(kù)系統(tǒng)200還包括帶有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206。數(shù)據(jù)庫(kù)206被標(biāo)識(shí)為DB1至DBN,以說(shuō)明系統(tǒng)200中數(shù)據(jù)庫(kù)206個(gè)數(shù)的變化。數(shù)據(jù)庫(kù)206可以是諸如IMS數(shù)據(jù)庫(kù)之類的層次結(jié)構(gòu)的數(shù)據(jù)庫(kù),但也可在另一實(shí)施例中包括關(guān)系型數(shù)據(jù)庫(kù)。在整個(gè)申請(qǐng)書中,以可互換的方式使用數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)數(shù)據(jù)集。
每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202都能訪問(wèn)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206,以便用戶能與保存在數(shù)據(jù)庫(kù)206上的任何數(shù)據(jù)進(jìn)行交互。一個(gè)或多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202還可服務(wù)于單個(gè)的數(shù)據(jù)庫(kù)206。這是一種通用的作法,因?yàn)椋瑪?shù)據(jù)庫(kù)206的規(guī)模通常需要一個(gè)以上的數(shù)據(jù)庫(kù)管理系統(tǒng)202來(lái)有效地管理事務(wù)。在有多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)206時(shí)就會(huì)出現(xiàn)共享會(huì)話。
用電子通訊線路208來(lái)表示數(shù)據(jù)庫(kù)管理系統(tǒng)202與數(shù)據(jù)庫(kù)206的互連。電子通訊線路208可被看作是數(shù)據(jù)載體并可被實(shí)現(xiàn)為網(wǎng)絡(luò)主干36。電子通訊線路208不需要組件在物理上彼此相連??捎秒姶?、紅外、或其它無(wú)線通訊線路來(lái)實(shí)現(xiàn)上述電子線路。此外,由于數(shù)據(jù)庫(kù)系統(tǒng)200在實(shí)現(xiàn)形式上是可變的,故圖2僅用于說(shuō)明的目的,因?yàn)椋皇敲恳粋€(gè)系統(tǒng)200都具有與多個(gè)數(shù)據(jù)庫(kù)206相通訊的多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202。就本發(fā)明的目的而言,存在有彼此相通訊的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202和一個(gè)數(shù)據(jù)庫(kù)206就足夠了。
數(shù)據(jù)庫(kù)恢復(fù)方法需要數(shù)據(jù)庫(kù)206具有相應(yīng)的備份拷貝,該拷貝可以是物理拷貝,也可以是邏輯拷貝。在一個(gè)實(shí)施例中,盡管也可以使用其它的存儲(chǔ)裝置,但備份拷貝210存儲(chǔ)在磁帶驅(qū)動(dòng)器上。備份拷貝210反映了某一時(shí)間范圍內(nèi)的數(shù)據(jù)庫(kù)206的內(nèi)容并用作數(shù)據(jù)庫(kù)恢復(fù)過(guò)程的起點(diǎn)。但是,備份拷貝210不是數(shù)據(jù)庫(kù)206的數(shù)據(jù)的完整信息庫(kù),并且,如下該那樣需要其它數(shù)據(jù)才能完成數(shù)據(jù)庫(kù)恢復(fù)。備份拷貝210可在需要時(shí)為進(jìn)行恢復(fù)而與系統(tǒng)200的其它組件作電子通訊208。
數(shù)據(jù)庫(kù)系統(tǒng)200還包括與恢復(fù)有關(guān)的信息的信息庫(kù)212。信息庫(kù)212用于存儲(chǔ)在介質(zhì)出故障或出現(xiàn)其它類型無(wú)意錯(cuò)誤的情況下恢復(fù)丟失數(shù)據(jù)所需的信息。例如,系統(tǒng)內(nèi)的硬件可能意外地出故障,或者,用戶可能偶然輸入了有問(wèn)題的數(shù)據(jù)或指令,這些數(shù)據(jù)或指令會(huì)導(dǎo)致一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206中的不一致性。信息庫(kù)212包括數(shù)據(jù)集,這些數(shù)據(jù)集合有與數(shù)據(jù)庫(kù)恢復(fù)有關(guān)的信息,這些信息則可以是系統(tǒng)200中使用的各個(gè)數(shù)據(jù)庫(kù)206所專用的。信息庫(kù)212按需與系統(tǒng)200中的其它組件作電子通訊208,以便更新和訪問(wèn)信息庫(kù)212中的數(shù)據(jù)集。通過(guò)指定一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集、指定用于恢復(fù)的整個(gè)數(shù)據(jù)庫(kù)206或指定如用于恢復(fù)的信息庫(kù)212中限定的組,可將要加以恢復(fù)的數(shù)據(jù)庫(kù)206列入恢復(fù)列表。所說(shuō)的組可例如包括數(shù)據(jù)庫(kù)數(shù)據(jù)集組或其它類型的數(shù)據(jù)庫(kù)組。
數(shù)據(jù)庫(kù)系統(tǒng)200包括一個(gè)或多個(gè)CADS214,它們標(biāo)為CADS1至CADSN,以說(shuō)明系統(tǒng)100中CADS214個(gè)數(shù)量上的變化。CADS214包含反映一段時(shí)間內(nèi)來(lái)自一個(gè)或多個(gè)日志204的變化數(shù)據(jù)的記錄。單個(gè)的CADS還可反映用于一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206的更新。CADS214可在需要時(shí)與其它組件作電子通訊208以便恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206。
參照?qǐng)D3,示出了用于在圖1的存儲(chǔ)器設(shè)備18內(nèi)進(jìn)行操作的多個(gè)可執(zhí)行模塊。當(dāng)然,本發(fā)明的模塊位于其中的存儲(chǔ)器設(shè)備18還可分布在本地和遠(yuǎn)程計(jì)算機(jī)工作站12上。在本文中用于進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)的邏輯結(jié)構(gòu)稱為數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)恢復(fù)工具300。數(shù)據(jù)庫(kù)恢復(fù)工具300可包括在如圖1所示的工作站12或服務(wù)器42上。就在工作站12或服務(wù)器42上實(shí)現(xiàn)數(shù)據(jù)庫(kù)恢復(fù)工具300并不需要進(jìn)行限制??捎枚喾N設(shè)備結(jié)構(gòu)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)恢復(fù)工具300,工作站12和服務(wù)器42僅僅是實(shí)例。
數(shù)據(jù)庫(kù)恢復(fù)工具300可與一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206集成并對(duì)數(shù)據(jù)庫(kù)206的物理恢復(fù)進(jìn)行管理。數(shù)據(jù)庫(kù)恢復(fù)工具300包括備份拷貝恢復(fù)工具302,用于讀取和恢復(fù)一個(gè)或多個(gè)備份拷貝210。在一個(gè)實(shí)施例中,備份拷貝恢復(fù)工具302從磁帶驅(qū)動(dòng)器中讀取備份拷貝210。備份拷貝210可包含用于一個(gè)以上數(shù)據(jù)庫(kù)206的備份拷貝數(shù)據(jù)集。另外,單個(gè)的數(shù)據(jù)庫(kù)206可存在有多個(gè)備份拷貝210。在恢復(fù)多個(gè)數(shù)據(jù)庫(kù)206時(shí),可能存在有多個(gè)備份拷貝210。如果需要一個(gè)以上的備份拷貝210,則備份拷貝恢復(fù)工具302最好并行地而不是順序地讀取這些備份拷貝210,以減少讀取時(shí)間。
數(shù)據(jù)庫(kù)恢復(fù)工具300還包括CADS管理器304,以讀取進(jìn)行恢復(fù)所需的CADS。同備份拷貝210一樣,并行地讀取CADS214,以減少讀取時(shí)間。在備份拷貝恢復(fù)工具302讀取備份拷貝210時(shí),CADS管理器304最好并行地讀取CADS214。在讀取和恢復(fù)備份拷貝210時(shí),CADS214被讀入存儲(chǔ)器18并根據(jù)需要作用于備份拷貝210。
并行地讀取備份拷貝210或CADS214的能力取決于可用的硬件刀件。如前該,每個(gè)備份拷貝210或CADS214均可存儲(chǔ)在諸如磁帶驅(qū)動(dòng)器之類的存儲(chǔ)器上。如果磁帶存儲(chǔ)器對(duì)正在讀取的各個(gè)備份拷貝210和CADS214來(lái)說(shuō)是可用的,則讀取時(shí)間是讀取最大備份拷貝210或CADS214的時(shí)間。如果存在有比備份拷貝210或CADS214少的驅(qū)動(dòng)器,則讀取時(shí)間會(huì)顯著增加,因?yàn)?,讀取時(shí)間需要順序的讀取。
數(shù)據(jù)庫(kù)恢復(fù)工具300還包括恢復(fù)控制模塊305,它可確認(rèn)信息庫(kù)212中的要被加至恢復(fù)列表內(nèi)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。恢復(fù)控制模塊305確定包含有進(jìn)行恢復(fù)所需數(shù)據(jù)的日志204、備份拷貝210以及CADS214。這種確定是以信息庫(kù)212中的數(shù)據(jù)為基礎(chǔ)的。用戶必須確保在正進(jìn)行恢復(fù)的所有數(shù)據(jù)庫(kù)206脫離數(shù)據(jù)庫(kù)管理系統(tǒng)202之前不開始進(jìn)行恢復(fù)?;謴?fù)列表中被分配給現(xiàn)役數(shù)據(jù)庫(kù)管理系統(tǒng)202的數(shù)據(jù)庫(kù)206將不進(jìn)行恢復(fù)?;謴?fù)工具300發(fā)送將不可恢復(fù)的數(shù)據(jù)庫(kù)206通知給用戶的消息。
圖3還說(shuō)明了CADS工具306,該工具累積更新并創(chuàng)建CADS214。如前該,CADS工具306順序地讀取日志204中的日志數(shù)據(jù)集,以創(chuàng)建一個(gè)或多個(gè)CADS214。
數(shù)據(jù)庫(kù)恢復(fù)工具300還包括日志管理器308,它讀取日志204中的所需的日志數(shù)據(jù)集。日志管理器308生成一恢復(fù)數(shù)據(jù)流,該數(shù)據(jù)流是恢復(fù)一組特定數(shù)據(jù)庫(kù)206所需的一組日志記錄。恢復(fù)數(shù)據(jù)流中的記錄按創(chuàng)建時(shí)間順序合并。
數(shù)據(jù)庫(kù)恢復(fù)工具300還包括合并結(jié)束點(diǎn)工具310,它確定日志管理器308所讀取的各日志中的合并結(jié)束點(diǎn)。合并結(jié)束點(diǎn)表示其中日志記錄不再與恢復(fù)的數(shù)據(jù)庫(kù)合并并且必須被寫入溢出記錄的不完整日志中的時(shí)間點(diǎn)。因此,合并結(jié)束點(diǎn)對(duì)日志記錄從詳細(xì)記錄轉(zhuǎn)換至溢出記錄的點(diǎn)作標(biāo)記。如以下該,確定合并結(jié)束點(diǎn)對(duì)本發(fā)明是有用的。合并結(jié)束點(diǎn)工具310可將合并結(jié)束點(diǎn)提供給CADS工具306,以確定合并結(jié)束點(diǎn)在CADS214中的位置。
數(shù)據(jù)庫(kù)恢復(fù)工具300可包括日志記錄路由器(路由器)312,它用于處理來(lái)自恢復(fù)數(shù)據(jù)流的日志記錄并將這些記錄提供給數(shù)據(jù)庫(kù)更新管理器314。數(shù)據(jù)庫(kù)更新管理器314對(duì)該日志記錄所涉及的數(shù)據(jù)庫(kù)數(shù)據(jù)集進(jìn)行更新。
數(shù)據(jù)庫(kù)恢復(fù)工具300還包括映像拷貝和恢復(fù)工具316,它用于創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)318。映像拷貝和恢復(fù)工具316接收來(lái)自備份拷貝恢復(fù)工具302的備份拷貝210并將備份拷貝210用作創(chuàng)建一個(gè)或多個(gè)被恢復(fù)的數(shù)據(jù)庫(kù)318的基礎(chǔ)。映像拷貝和恢復(fù)工具316還接收來(lái)自CADS管理器304的數(shù)據(jù)集。映像拷貝和恢復(fù)工具316按適當(dāng)?shù)捻樞騾f(xié)調(diào)來(lái)自CADS214的數(shù)據(jù)集的應(yīng)用,以創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)318。在該映像拷貝和恢復(fù)工具業(yè)已創(chuàng)建并被寫入被恢復(fù)的數(shù)據(jù)庫(kù)318之后,數(shù)據(jù)庫(kù)更新管理器314就將日志數(shù)據(jù)集合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318的適當(dāng)位置處。
參照?qǐng)D4,示出了用于多個(gè)日志204的時(shí)間線圖,該圖在總體上被表示為標(biāo)號(hào)400。圖4所示的日志204處在共享環(huán)境中,其中兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)202正在訪問(wèn)一單個(gè)數(shù)據(jù)庫(kù)206。日志204持續(xù)一段時(shí)間直至數(shù)據(jù)庫(kù)出現(xiàn)故障401。每個(gè)日志204均含有時(shí)間線上所示并由相應(yīng)數(shù)據(jù)庫(kù)管理系統(tǒng)202所執(zhí)行的一系列更新402。日志204因共享環(huán)境而不使所有的日志記錄可用,從而是不完整的日志數(shù)據(jù)集。因此,不知道是中斷還是提交了某些更新402。
合并結(jié)束點(diǎn)被標(biāo)記為404并且是將可被合并的詳細(xì)記錄406與不能被合并的溢出記錄408分隔開的時(shí)間點(diǎn)。如圖4所示,合并結(jié)束點(diǎn)404左側(cè)的所有日志記錄均為詳細(xì)記錄406,右側(cè)的所有日志記錄均為溢出記錄408。在合并結(jié)束點(diǎn)404處,變化累積過(guò)程停止將日志記錄寫入詳細(xì)記錄406并且必須在此后將日志記錄寫入溢出記錄408。
在特定的時(shí)間,執(zhí)行變化累積過(guò)程410以創(chuàng)建CADS214。將被確認(rèn)為被提交了的更新402寫入CADS214中的詳細(xì)記錄406內(nèi)。但是,某些更新402未被確認(rèn)為被提交了,從而不能與其它記錄合并??蔀椴煌暾娜罩炯瘓?zhí)行變化累積過(guò)程410,但未被確認(rèn)的更新402被寫入溢出記錄408并且是不完整CADS214的一部分。正如在本技術(shù)中周知的那樣,假定相關(guān)的日志記錄變?yōu)榭捎玫?,則溢出記錄408可在隨后的變化累積過(guò)程中加以讀取并與其它記錄相合并。
參照?qǐng)D5,示出了方法步驟500的順序,以說(shuō)明本發(fā)明方法的一個(gè)實(shí)施例。在啟動(dòng)這一方法之前,有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)206出故障。該恢復(fù)方法在步驟502開始啟動(dòng)。啟動(dòng)包括例如通過(guò)創(chuàng)建一獨(dú)立的地址空間去管理備份數(shù)據(jù)集、CADS和日志數(shù)據(jù)集而使數(shù)據(jù)庫(kù)恢復(fù)工具準(zhǔn)備操作、進(jìn)行內(nèi)部系統(tǒng)檢查、初始化該地址的存儲(chǔ)器和設(shè)備等。由圖3所示的數(shù)據(jù)庫(kù)恢復(fù)工具300來(lái)執(zhí)行進(jìn)行恢復(fù)的命令。一旦啟動(dòng)步驟502開始,就在不用用戶干預(yù)的情況下自動(dòng)地執(zhí)行方法500的其余步驟,例外的是如下該那樣將備份拷貝210和CADS214裝進(jìn)輸入設(shè)備26。
在步驟504中,恢復(fù)工具300建立一恢復(fù)列表,它是要加以恢復(fù)的數(shù)據(jù)庫(kù)206的列表。在一個(gè)實(shí)施例中,當(dāng)在步驟504中建立恢復(fù)列表時(shí),該列表就與發(fā)出恢復(fù)命令的邏輯終端相關(guān)聯(lián)。
當(dāng)恢復(fù)工具102接收到命令而開始進(jìn)行恢復(fù)時(shí),就在步驟506中繼續(xù)恢復(fù)?;謴?fù)工具300進(jìn)行檢查以判斷當(dāng)前是否在進(jìn)行恢復(fù)或者是否是不能找到的希望恢復(fù)的列表。如果是這樣的話,則發(fā)出出錯(cuò)信息并中斷恢復(fù)。否則,繼續(xù)進(jìn)行恢復(fù)。恢復(fù)工具300通過(guò)確保各數(shù)據(jù)庫(kù)206均處于允許被恢復(fù)的狀態(tài)而確認(rèn)恢復(fù)列表并且還確定為恢復(fù)這些被確認(rèn)的條目所需的資源。
在步驟508中,備份拷貝恢復(fù)工具302并行地讀取所需的備份拷貝210。CADS管理器304同時(shí)并行地讀取所需的CADS214。并行地讀取備份拷貝210和CADS214取決于諸如磁帶驅(qū)動(dòng)器之類的可用的輸入設(shè)備26的數(shù)量。在一個(gè)實(shí)施例中,用戶可以指定要加以使用的輸入設(shè)備26的數(shù)量。
在用單個(gè)CADS214上的記錄恢復(fù)多個(gè)數(shù)據(jù)庫(kù)210時(shí),僅將CADS214讀入存儲(chǔ)器18一次。然后,從存儲(chǔ)器18中檢索出恢復(fù)指令數(shù)據(jù)庫(kù)210所需的記錄。這就消除了為各數(shù)據(jù)庫(kù)210重復(fù)讀取單個(gè)CADS214的步驟。
在共享環(huán)境中,CADS214是不完整的并包含有不可合并的溢出記錄408。為了加快恢復(fù),CADS管理器304僅讀取詳細(xì)記錄406并忽略溢出記錄408。這樣,由于僅讀取詳細(xì)記錄406,恢復(fù)工作不需執(zhí)行變化累積過(guò)程以完成CADS。詳細(xì)記錄404反映了合并結(jié)束點(diǎn)404范圍內(nèi)的更新402并被讀入存儲(chǔ)器18。
在步驟510中,用映像拷貝和恢復(fù)工具316將備份拷貝210寫入相應(yīng)的被恢復(fù)的數(shù)據(jù)庫(kù)318。通過(guò)這種方式,備份拷貝210用作創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)318的起始點(diǎn)。在用映像拷貝和恢復(fù)工具316寫備份拷貝210時(shí),映像拷貝和恢復(fù)工具316確定CADS214的下一個(gè)詳細(xì)記錄404在被恢復(fù)的數(shù)據(jù)庫(kù)318內(nèi)的位置。CADS214的每個(gè)詳細(xì)記錄404均具有用于在被恢復(fù)的數(shù)據(jù)庫(kù)318內(nèi)順序組織的標(biāo)識(shí)。映像拷貝和恢復(fù)工具316將備份拷貝210順序地寫入被恢復(fù)的數(shù)據(jù)庫(kù)318,直至需要來(lái)自CADS214的下一個(gè)詳細(xì)記錄404。在將詳細(xì)記錄404合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318之后,映像拷貝和恢復(fù)工具316確定下一個(gè)詳細(xì)記錄404的位置。
在步驟512中,映像拷貝和恢復(fù)工具316查詢CADS管理器304是否已讀取了被恢復(fù)的數(shù)據(jù)庫(kù)318所需的具體詳細(xì)記錄404。在詳細(xì)記錄406被CADS管理器304讀入存儲(chǔ)器18時(shí),就按需將記錄404發(fā)送至映像拷貝和恢復(fù)工具316。如果在對(duì)詳細(xì)記錄406進(jìn)行請(qǐng)求時(shí)存在延遲,則可將某些或全部的詳細(xì)記錄406存儲(chǔ)在虛擬存儲(chǔ)器25上,以便長(zhǎng)期保存。
在步驟516,如果業(yè)已讀取了所請(qǐng)求的詳細(xì)記錄404,則將其發(fā)送給映像拷貝和恢復(fù)工具316并使其按時(shí)間順序與被恢復(fù)的數(shù)據(jù)庫(kù)318相合并。
在步驟514中,如果尚未讀取所請(qǐng)求的詳細(xì)記錄404,則將該查詢保存在存儲(chǔ)器18內(nèi)。當(dāng)CADS管理器304讀取詳細(xì)記錄404時(shí),就記下該查詢,并將詳細(xì)記錄406發(fā)送給映像拷貝和恢復(fù)工具316,以使該詳細(xì)記錄合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318。
應(yīng)該理解,盡管就圖5的流程圖以線性的方式說(shuō)明了方法500,但卻可以同時(shí)執(zhí)行步驟508、510、512、514和516。因此,在將備份拷貝210寫入被恢復(fù)的數(shù)據(jù)庫(kù)318時(shí),就可將詳細(xì)記錄406讀出并合并到被恢復(fù)的數(shù)據(jù)庫(kù)318中。
在步驟518中,將備份拷貝210和CADS214合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318。日志管理器308將一個(gè)或多個(gè)日志204讀入存儲(chǔ)器18,合并結(jié)束點(diǎn)工具310確定合并結(jié)束點(diǎn)404在日志204內(nèi)的位置。在共享環(huán)境中,可能要讀取一個(gè)以上的日志204。并行地讀取日志204以減少讀取時(shí)間。并行讀取日志204取決于可用的輸入設(shè)備26的數(shù)量。因此,日志讀取時(shí)間和讀取最長(zhǎng)日志204所需時(shí)間一樣長(zhǎng)。
日志管理器308導(dǎo)出合并結(jié)束點(diǎn)404之后的更新402,溢出記錄408中反映了這些更新402。日志管理器308能判斷出是否根據(jù)對(duì)日志204的讀取提交了溢出記錄408中的更新402。在恢復(fù)數(shù)據(jù)流中將更新402發(fā)送給路由器312,然后將更新402發(fā)送給數(shù)據(jù)庫(kù)更新管理器314。
在步驟520中,日志記錄路由器312驅(qū)動(dòng)數(shù)據(jù)庫(kù)更新管理器314,以便按時(shí)間順序?qū)⒏?02合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318。在映像拷貝和恢復(fù)工具316完成了它對(duì)被恢復(fù)的數(shù)據(jù)庫(kù)318的寫操作之后,數(shù)據(jù)庫(kù)恢復(fù)工具300僅能使數(shù)據(jù)庫(kù)更新管理器314進(jìn)行操作。在合并結(jié)束點(diǎn)404之后的每個(gè)提交的更新均予以考慮并被合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318。在讀取日志204的同時(shí)將來(lái)自溢出記錄408的更新402合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318,以便進(jìn)一步加快恢復(fù)過(guò)程。因此,在確認(rèn)出提交了更新402時(shí),就立即將它們與被恢復(fù)的數(shù)據(jù)庫(kù)318相合并,因?yàn)?,從日?04中讀出后續(xù)的更新402。因此,被恢復(fù)的數(shù)據(jù)庫(kù)318是出故障之前的數(shù)據(jù)庫(kù)206的精確反映。
在步驟522中,方法500結(jié)束。
本發(fā)明的主要優(yōu)點(diǎn)是并行地執(zhí)行多個(gè)過(guò)程。將備份拷貝210和CADS214并行地讀入存儲(chǔ)器以便同時(shí)進(jìn)行處理。所以,可在與將備份拷貝210寫入被恢復(fù)的數(shù)據(jù)庫(kù)318的同時(shí)立即使用詳細(xì)記錄406。在不立即需要詳細(xì)記錄406的情況下,可將它們移至長(zhǎng)期存儲(chǔ)器中。此外,將數(shù)據(jù)庫(kù)恢復(fù)所需的各個(gè)CADS214讀入存儲(chǔ)器一次,而不管多個(gè)數(shù)據(jù)庫(kù)206是如何具有CADS214中的記錄的。還并行而不是順序地讀取日志204,以減少日志讀取時(shí)間量。因此,用于恢復(fù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的經(jīng)過(guò)的時(shí)間是用于最大CADS214或最大備份拷貝210的讀取時(shí)間;加上寫入最大的被恢復(fù)的數(shù)據(jù)庫(kù)318的時(shí)間;減去在寫入最大的被恢復(fù)的數(shù)據(jù)庫(kù)318的同時(shí)讀取CADS214和備份拷貝210的重疊時(shí)間;加上用于最大日志204的讀取時(shí)間;加上將來(lái)自日志204的更新402合并至被恢復(fù)的數(shù)據(jù)庫(kù)318;以及減去讀取日志204和合并更新402的重疊時(shí)間。
本發(fā)明的另一個(gè)主要優(yōu)點(diǎn)是根據(jù)不完整的CADS214直接進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。通過(guò)忽略CADS214中的溢出記錄并依靠日志204的后續(xù)讀數(shù),可將所有提交的更新402合并進(jìn)被恢復(fù)的數(shù)據(jù)庫(kù)318。這就消除了執(zhí)行變化累積過(guò)程完成各個(gè)不完整CADS214的耗時(shí)要求。因此,可顯著地加快共享環(huán)境中數(shù)據(jù)庫(kù)206的恢復(fù)。
在不脫離本發(fā)明實(shí)質(zhì)或本質(zhì)特征的情況下,可用其它特定形式來(lái)實(shí)施本發(fā)明。上述實(shí)施例應(yīng)被看作是在所有方面僅是說(shuō)明性的并且不是限制性的。所以,本發(fā)明的范圍是由后附權(quán)利要求而不是由前述說(shuō)明所指明的。該權(quán)利要求的等價(jià)形式范圍內(nèi)的變化形式均包括在權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于恢復(fù)出故障的數(shù)據(jù)庫(kù)數(shù)據(jù)集的設(shè)備,該設(shè)備包括一存儲(chǔ)器設(shè)備,它存儲(chǔ)有可執(zhí)行的模塊,該模塊包括恢復(fù)工具,該工具帶有一備份拷貝恢復(fù)工具,它配置成讀取和恢復(fù)該數(shù)據(jù)庫(kù)數(shù)據(jù)集的備份拷貝。一變化累積管理器,它配置成與讀取和恢復(fù)備份拷貝相并行地讀取變化累積數(shù)據(jù)集,以獲得詳細(xì)記錄;以及一映像拷貝恢復(fù)工具,它配置成在讀取和恢復(fù)前述備份拷貝期間將詳細(xì)記錄作用于該備份拷貝,以便創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
2.如權(quán)利要求1的設(shè)備,其中,該備份拷貝恢復(fù)工具還配置成并行地讀取和恢復(fù)多個(gè)備份拷貝。
3.如權(quán)利要求1的設(shè)備,其中,該變化累積管理器還配置成并行地讀取多個(gè)變化累積數(shù)據(jù)集以導(dǎo)出詳細(xì)記錄。
4.如權(quán)利要求1的設(shè)備,其特征在于,該恢復(fù)工具還包括一合并結(jié)束點(diǎn)工具,它配置成確定反映日志中詳細(xì)記錄和溢出記錄分隔的合并結(jié)束點(diǎn),。
5.如權(quán)利要求1的設(shè)備,其特征在于,該恢復(fù)工具還包括一日志管理器,它配置成讀取日志以導(dǎo)出合并結(jié)束點(diǎn)之后的更新;以及一數(shù)據(jù)庫(kù)更新管理器,它配置成將上述更新用于被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
6.如權(quán)利要求5的設(shè)備,其特征在于,該日志管理器還配置成并行讀取多個(gè)日志,以導(dǎo)出合并結(jié)束點(diǎn)之后的更新。
7.如權(quán)利要求5的設(shè)備,其特征在于,該數(shù)據(jù)庫(kù)更新管理器還配置成在恢復(fù)了備份拷貝之后使用該更新。
8.權(quán)利要求1的設(shè)備,其特征在于,該設(shè)備還包括一虛擬存儲(chǔ)器,并且,該變化累積管理器還配置成將詳細(xì)記錄的至少一部分存儲(chǔ)到該虛擬存儲(chǔ)器內(nèi)。
9.如權(quán)利要求1的設(shè)備,其特征在于,該備份拷貝恢復(fù)工具配置成在讀取和恢復(fù)備份拷貝期間將對(duì)與數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)的詳細(xì)紀(jì)錄的查詢發(fā)送給變化累積管理器。
10.如權(quán)利要求9的設(shè)備,其特征在于,該變化累積管理器配置成如果詳細(xì)記錄業(yè)尚未被變化累積管理器所讀取則保存查詢并且配置成在變化累積管理器業(yè)已讀取了詳細(xì)記錄的情況下將該詳細(xì)記錄發(fā)送給映像拷貝恢復(fù)過(guò)程。
11.一種用于恢復(fù)出現(xiàn)故障的數(shù)據(jù)庫(kù)數(shù)據(jù)集的方法,該方法包括讀取和恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)集的備份拷貝;與讀取和恢復(fù)備份拷貝相并行地讀取變化累積數(shù)據(jù)集,以導(dǎo)出與數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)的詳細(xì)記錄;以及在讀取和恢復(fù)備份拷貝期間將該詳細(xì)記錄應(yīng)用于備份拷貝,以創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
12.如權(quán)利要求11的方法,其特征在于,該方法還包括并行地讀取和恢復(fù)多個(gè)備份拷貝,其中該備份拷貝與相應(yīng)的出現(xiàn)故障的數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)。
13.如權(quán)利要求11的方法,其特征在于,該方法還包括并行地讀取多個(gè)變化累積數(shù)據(jù)集以導(dǎo)出詳細(xì)記錄。
14.如權(quán)利要求11的方法,其特征在于,該方法還包括讀取一日志以導(dǎo)出合并結(jié)束點(diǎn)之后的更新并將這些更新用于被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
15.如權(quán)利要求14的方法,其特征在于,在恢復(fù)了備份拷貝之后執(zhí)行讀取日志和應(yīng)用更新。
16.如權(quán)利要求11的方法,其特征在于,該方法還包括并行讀取多個(gè)日志以導(dǎo)出合并結(jié)束點(diǎn)之后的更新并將這些更新應(yīng)用于被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
17.如權(quán)利要求11的方法,其特征在于,該方法還包括確定該合并結(jié)束點(diǎn),其中該合并結(jié)束點(diǎn)反映日志中詳細(xì)記錄與溢出記錄的分隔。
18.如權(quán)利要求11的方法,其特征在于,該方法還包括將該詳細(xì)記錄的至少一部分存儲(chǔ)到一虛擬存儲(chǔ)器內(nèi)。
19.如權(quán)利要求11的方法,其特征在于,該方法還包括生成一查詢以提示與數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)的詳細(xì)記錄。
20.如權(quán)利要求19的方法,其特征在于,該方法還包括如果尚未讀取詳細(xì)記錄則保存查詢并在業(yè)已讀出了詳細(xì)記錄的情況下通過(guò)將詳細(xì)記錄應(yīng)用于備份拷貝而對(duì)該查詢進(jìn)行響應(yīng)。
21.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行的指令以執(zhí)行用于恢復(fù)出故障的數(shù)據(jù)庫(kù)數(shù)據(jù)的方法,該方法包括讀出和恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)集的備份拷貝;與讀出和恢復(fù)備份拷貝相并行地讀取變化累積數(shù)據(jù)集以導(dǎo)出與數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)的詳細(xì)記錄;以及在讀取和恢復(fù)備份拷貝期間同時(shí)將該詳細(xì)記錄應(yīng)用于備份拷貝以創(chuàng)建被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
22.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括并行地讀取和恢復(fù)多個(gè)備份拷貝,其中,該備份拷貝與相應(yīng)的出現(xiàn)故障的數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)聯(lián)。
23.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括并行地讀取多個(gè)變化累積數(shù)據(jù)集以導(dǎo)出詳細(xì)記錄。
24.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括讀取一日志,以導(dǎo)出合并結(jié)束點(diǎn)之后的更新并將這些更新用于被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
25.如權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其特征在于,在恢復(fù)了備份拷貝之后執(zhí)行讀取日志和應(yīng)用更新。
26.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括并行讀取多個(gè)日志以導(dǎo)出合并結(jié)束點(diǎn)之后的更新并將這些更新應(yīng)用于被恢復(fù)的數(shù)據(jù)庫(kù)數(shù)據(jù)集。
27.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括確定該合并結(jié)束點(diǎn),其中該合并結(jié)束點(diǎn)反映日志中詳細(xì)記錄與溢出記錄的分隔。
28.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括將該詳細(xì)記錄的至少一部分存儲(chǔ)到一虛擬存儲(chǔ)器內(nèi)。
29.如權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括生成一查詢以提示與數(shù)據(jù)庫(kù)數(shù)據(jù)集相關(guān)的詳細(xì)記錄。
30.如權(quán)利要求29的計(jì)算機(jī)可讀介質(zhì),其特征在于,該方法還包括如果尚未讀取詳細(xì)記錄則保存查詢并在業(yè)已讀出了詳細(xì)記錄的情況下通過(guò)使詳細(xì)記錄作用于備份拷貝而對(duì)該查詢進(jìn)行響應(yīng)。
全文摘要
本發(fā)明涉及用于在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)集出現(xiàn)故障期間加快恢復(fù)時(shí)間的恢復(fù)工具設(shè)備。備份拷貝恢復(fù)工具并行讀取數(shù)據(jù)庫(kù)數(shù)據(jù)集的備份拷貝。同時(shí),變化累積管理器并行讀取一個(gè)或多個(gè)CADS。變化累積管理器僅讀取業(yè)已提交的詳細(xì)記錄并忽略溢出記錄,以消除為進(jìn)行恢復(fù)而對(duì)完成各個(gè)不完整的CADS的需要。日志管理器讀取一個(gè)或多個(gè)日志,以獲取溢出記錄中在合并結(jié)束點(diǎn)之后的更新。
文檔編號(hào)G06F11/14GK1317742SQ01116278
公開日2001年10月17日 申請(qǐng)日期2001年4月9日 優(yōu)先權(quán)日2000年4月10日
發(fā)明者D·W·穆爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司