專利名稱:用于恢復(fù)數(shù)據(jù)庫中單元的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫領(lǐng)域,尤其涉及數(shù)據(jù)庫結(jié)構(gòu)中多個(gè)獨(dú)立可恢復(fù)單元的使用。
背景技術(shù):
大多數(shù)現(xiàn)代數(shù)據(jù)庫展現(xiàn)或全部可用或全部不可用的特征。維護(hù)或?yàn)?zāi)害恢復(fù)方案在維護(hù)或恢復(fù)期間呈現(xiàn)不可用的數(shù)據(jù)庫。在這樣方案中的可用性單元是整個(gè)數(shù)據(jù)庫。圖1示出分成表格A、B和C的一現(xiàn)有技術(shù)數(shù)據(jù)庫100,分別為101、102和103。每個(gè)表格使用單個(gè)日志流105來記錄行和其它數(shù)據(jù)中的變化,以使數(shù)據(jù)庫保持事務(wù)處理一致。隨著數(shù)據(jù)庫尺寸的增加以及更多表格被添加到數(shù)據(jù)庫中,必須將更大量的數(shù)據(jù)寫入該日志流105。日志流變成了導(dǎo)致不斷觸及數(shù)據(jù)庫所駐留硬件限制的重大可管理性和性能問題的瓶頸。最后,數(shù)據(jù)庫因單個(gè)日志流及其對于恢復(fù)數(shù)據(jù)庫信息的可訪問性和速度的限制而阻塞。
對該問題的一個(gè)現(xiàn)有技術(shù)選項(xiàng)是通過將單個(gè)日志分成多個(gè)日志流來更好地管理日志流。圖2示出分成分別為201、202和203的表格D、E和F,以及共享但獨(dú)立的日志流數(shù)據(jù)集207、208和209的數(shù)據(jù)庫200。為了跟蹤和管理這些日志流數(shù)據(jù)集,引入一協(xié)調(diào)機(jī)制205。然而,盡管這解決了日志流數(shù)據(jù)的阻塞問題,但是它仍然因?yàn)樵搮f(xié)調(diào)機(jī)制205最終隨數(shù)據(jù)庫尺寸的增大變慢而產(chǎn)生另一問題。還有,僅僅對諸如表格D 201的單個(gè)表格的恢復(fù)可能需要使用多個(gè)數(shù)據(jù)日志流207、208和209,因?yàn)楸砀馜的數(shù)據(jù)日志流分布在所有數(shù)據(jù)日志流上。盡管圖2的架構(gòu)是圖1的改進(jìn),由于協(xié)調(diào)機(jī)制205的瓶頸它仍具有有限的速度性能,而且整個(gè)數(shù)據(jù)庫在涉及日志數(shù)據(jù)流的恢復(fù)操作期間仍然不可用。
因而,需要一種對于性能瓶頸和在恢復(fù)動(dòng)作期間至少部分?jǐn)?shù)據(jù)庫可用的需要可允許速度上改進(jìn)的架構(gòu)。本發(fā)明解決了所述需要并用在此所述的附加優(yōu)點(diǎn)來處理它們。
發(fā)明內(nèi)容
數(shù)據(jù)庫中稱為恢復(fù)單元的多個(gè)可恢復(fù)數(shù)據(jù)庫部分的結(jié)構(gòu)對于添加僅在數(shù)據(jù)庫一部分上執(zhí)行維護(hù)或?yàn)?zāi)害恢復(fù)同時(shí)允許訪問其它部分的能力是有用的。這在單個(gè)日志流或日志流協(xié)調(diào)機(jī)制的瓶頸可減緩恢復(fù)操作的極大數(shù)據(jù)庫中是特別有用的。該方法涉及將數(shù)據(jù)庫分成多個(gè)恢復(fù)單元并創(chuàng)建元數(shù)據(jù)的主要和次要目錄。
主要目錄可包含恢復(fù)單元的邏輯元素,包括對數(shù)據(jù)庫、表格、索引、文件組、數(shù)據(jù)類型、約束、存儲(chǔ)過程、觸發(fā)器、以及其它可標(biāo)識(shí)數(shù)據(jù)庫結(jié)構(gòu)的引用。次要目錄將與每個(gè)恢復(fù)單元相關(guān)聯(lián),并可包括有關(guān)恢復(fù)單元的物理元素的元數(shù)據(jù),包括文件、頁面、B-樹、堆陣、恢復(fù)單元以及日志流數(shù)據(jù)。
在定義了主要和次要目錄之后,鏈接主要和次要目錄并可運(yùn)用恢復(fù)單元以僅在數(shù)據(jù)庫的一部分或恢復(fù)單元上執(zhí)行維護(hù)或恢復(fù)操作,同時(shí)其它恢復(fù)單元可由數(shù)據(jù)庫的用戶訪問。在本發(fā)明一實(shí)施例中,恢復(fù)單元可被用以將數(shù)據(jù)庫的一部分復(fù)制到另一部分,從而將其效用擴(kuò)展到恢復(fù)目的之外。
結(jié)合附圖閱讀前面的發(fā)明內(nèi)容和以下說明性實(shí)施例的詳細(xì)描述,能得到更好的理解。為了說明本發(fā)明各實(shí)施例,在附圖中示出本發(fā)明的示例性結(jié)構(gòu);然而,本發(fā)明并不限于所揭示的特定方法和裝置。在附圖中圖1是現(xiàn)有技術(shù)的經(jīng)劃分?jǐn)?shù)據(jù)庫的框圖;圖2是現(xiàn)有技術(shù)的經(jīng)劃分?jǐn)?shù)據(jù)庫的另一框圖;圖3是示出本發(fā)明日志流方面的框圖;圖4是示出本發(fā)明元數(shù)據(jù)組織的框圖;圖5是示出本發(fā)明恢復(fù)單元傳送方面的框圖;圖6示出包括在本發(fā)明中恢復(fù)單元的創(chuàng)建的示例性流程圖;圖7示出用于數(shù)據(jù)庫之間恢復(fù)單元傳送的本發(fā)明一實(shí)施例的示例性流程圖;圖8是示出其中可實(shí)現(xiàn)本發(fā)明各方面的示例性計(jì)算環(huán)境的框圖。
具體實(shí)施例方式
縱覽本發(fā)明一實(shí)施例提供數(shù)據(jù)庫中的多個(gè)恢復(fù)單元用于解決現(xiàn)有技術(shù)的瓶頸問題,并提供增加整個(gè)數(shù)據(jù)庫可用性的能力。這可通過在維護(hù)或?yàn)?zāi)害恢復(fù)情形期間僅有部分?jǐn)?shù)據(jù)庫不可用來完成。本發(fā)明一方面提供數(shù)據(jù)庫邏輯元素和物理元素之間的獨(dú)立元數(shù)據(jù)。邏輯元素包括用戶可見的數(shù)據(jù)庫、表格、索引、表格和索引的各部分、數(shù)據(jù)類型、約束、存儲(chǔ)過程、觸發(fā)器和文件組。物理元素包括用戶不可見的頁面、文件、B-樹、堆陣、恢復(fù)單元和日志。表示數(shù)據(jù)庫邏輯元素的元數(shù)據(jù)存儲(chǔ)在“主要”恢復(fù)單元中,而數(shù)據(jù)庫物理元素的元數(shù)據(jù)被存儲(chǔ)在其自己的相應(yīng)“次要”恢復(fù)單元。通過使該邏輯和物理元數(shù)據(jù)方法保持一致,本發(fā)明一實(shí)施例可提供對單獨(dú)物理日志流中單個(gè)邏輯表格或索引的獨(dú)立記錄更新。
在使用圖3討論示例性配置之后,將結(jié)合圖4-7討論示例性方法和實(shí)施例。還結(jié)合圖8討論示例性計(jì)算環(huán)境。
本發(fā)明示例性實(shí)施例圖3示出本發(fā)明一實(shí)施例的功能圖。該實(shí)施例包括數(shù)據(jù)被分成多個(gè)表格的數(shù)據(jù)庫300。圖3示出4個(gè)這樣的表格,但本發(fā)明無需受此限制。本架構(gòu)規(guī)定表格302、304、306和308僅與一個(gè)日志數(shù)據(jù)流相關(guān)聯(lián)。此外,日志流303、305和307可彼此獨(dú)立地發(fā)揮作用。因而,例如表格1(302)僅與日志數(shù)據(jù)流303相關(guān)聯(lián)。表格2(304)僅與日志數(shù)據(jù)流305相關(guān)聯(lián)。表格3(306)僅與日志數(shù)據(jù)流307相關(guān)聯(lián)。表格4(308)僅與日志數(shù)據(jù)流307相關(guān)聯(lián)。注意,圖4的表格302、304和306可以是數(shù)據(jù)庫300的任意部分。各部分可以是表格,數(shù)據(jù)庫中任意數(shù)據(jù)的表格或索引的一部分。
圖3的體系結(jié)構(gòu)允許多個(gè)數(shù)據(jù)流日志支持?jǐn)?shù)據(jù)庫300恢復(fù)操作。該體系結(jié)構(gòu)使單個(gè)表格能僅與單個(gè)日志相關(guān)聯(lián),即單個(gè)表格僅使用一個(gè)日志數(shù)據(jù)流。該體系結(jié)構(gòu)通過使用日志數(shù)據(jù)允許單個(gè)表格或數(shù)據(jù)庫部分的恢復(fù),從而恢復(fù)可僅在一個(gè)表格上完成而使該數(shù)據(jù)庫的其它表格可被訪問。日志流的獨(dú)立性及其與各部分或表格的緊密關(guān)聯(lián)消除了出現(xiàn)在現(xiàn)有技術(shù)中的瓶頸。因此,在正常操作和恢復(fù)操作中有速度增加的益處。此外,如在此還要描述的,圖3的體系結(jié)構(gòu)允許一個(gè)或單個(gè)數(shù)據(jù)庫部分向另一數(shù)據(jù)庫傳送。
本發(fā)明的一方面是單個(gè)數(shù)據(jù)庫可被分成稱為恢復(fù)單元的多個(gè)數(shù)據(jù)庫部分。每個(gè)恢復(fù)單元具有其自己的數(shù)據(jù)文件和日志流集,且每一個(gè)都可獨(dú)立于數(shù)據(jù)庫中其它恢復(fù)單元而被恢復(fù)。恢復(fù)單元是因?yàn)楣蚕硗蝗罩径聞?wù)一致的文件組、文件和日志的集合。數(shù)據(jù)庫中的表格和索引可被分配或劃分成不同恢復(fù)單元以將工作量分解到每個(gè)數(shù)據(jù)庫的多個(gè)日志流中。一旦數(shù)據(jù)庫被分成這些獨(dú)立恢復(fù)單元,該數(shù)據(jù)庫的總體可用性和性能可通過恢復(fù)和復(fù)原分別來自數(shù)據(jù)庫剩余部分的單個(gè)恢復(fù)單元的能力來增加。在恢復(fù)期間僅有駐留于正在恢復(fù)的恢復(fù)單元上的數(shù)據(jù)庫部分是不可用的。數(shù)據(jù)庫的剩余部分保持可用。
在一實(shí)施例中,用于構(gòu)建恢復(fù)單元的一種方法是數(shù)據(jù)庫邏輯元素和物理元素之間元數(shù)據(jù)的分離。邏輯元素的示例是用戶可見的數(shù)據(jù)庫、表格、索引、表格和索引的各部分、數(shù)據(jù)類型、約束、存儲(chǔ)過程、觸發(fā)器和文件組和其它數(shù)據(jù)庫結(jié)構(gòu)。物理元素的示例是用戶不可見的頁面、文件、B-樹、堆陣、恢復(fù)單元和日志。在一實(shí)施例中,表示數(shù)據(jù)庫邏輯元素的元數(shù)據(jù)存儲(chǔ)在“主要”目錄中,而數(shù)據(jù)庫物理元素的元數(shù)據(jù)被存儲(chǔ)在其自己的恢復(fù)單元。通過使該邏輯和物理元數(shù)據(jù)方法保持一致,至少一實(shí)施例能夠?qū)为?dú)物理日志流中單個(gè)邏輯表格或索引的獨(dú)立記錄更新。
圖4示出了本發(fā)明一實(shí)施例中邏輯和物理元數(shù)據(jù)的分離。實(shí)施例400示出具有邏輯部分450和物理部分460的數(shù)據(jù)庫,每一部分都具有與該方法相關(guān)聯(lián)的元數(shù)據(jù)。在邏輯層450中,可構(gòu)建包含有關(guān)數(shù)據(jù)庫中所有表格、索引和部分的文件和文件組的元數(shù)據(jù)的主要目錄402。該元數(shù)據(jù)還包含文件、文件組以及相應(yīng)恢復(fù)單元標(biāo)識(shí)符之間的關(guān)聯(lián)。例如,主要目錄可包括有關(guān)數(shù)據(jù)庫表格數(shù)據(jù)406的表格和索引403的元數(shù)據(jù)。表格數(shù)據(jù)406可被分成多個(gè)數(shù)據(jù)庫部分408、410,每個(gè)數(shù)據(jù)庫部分可呈現(xiàn)表格、索引、或任意其它數(shù)據(jù)集或元數(shù)據(jù)集。主要目錄還包含有關(guān)包含于數(shù)據(jù)庫中數(shù)據(jù)的信息上任何其它形式的索引404。
主要目錄402可包含有關(guān)諸如數(shù)據(jù)庫部分408、410及相關(guān)聯(lián)恢復(fù)單元及其相應(yīng)標(biāo)識(shí)符的數(shù)據(jù)結(jié)構(gòu)之間鏈接的元數(shù)據(jù)。例如,數(shù)據(jù)庫部分408及相應(yīng)恢復(fù)單元1(414)之間的鏈接409可以是主要目錄元數(shù)據(jù)。類似地,鏈接411和405還可被包含于主要目錄元數(shù)據(jù)以便使本發(fā)明實(shí)施例的邏輯層450與物理層460的物理恢復(fù)單元416和418相關(guān)聯(lián)。
物理層460可包括物理恢復(fù)單元。在圖4示例中,有三個(gè)恢復(fù)單元,但可建立任意數(shù)量的恢復(fù)單元。在圖4示例中,恢復(fù)單元1(414)與數(shù)據(jù)庫部分A 408相關(guān)聯(lián),恢復(fù)單元2(416)與數(shù)據(jù)庫部分B 410相關(guān)聯(lián)而恢復(fù)單元3與主要目錄450的其它索引404相關(guān)聯(lián)?;謴?fù)單元1(414)可包括次要目錄420,它還包括它所引用的數(shù)據(jù)庫物理元素的元數(shù)據(jù)。例如,次要目錄可包括對B-樹、文件、頁面、堆陣或日志數(shù)據(jù)的引用。在圖4的示例實(shí)施例中,次要目錄420包含對B-樹1(422)的引用,以及組成B-樹的頁面424。次要目錄還具有對日志1流數(shù)據(jù)426的引用元數(shù)據(jù),所述流數(shù)據(jù)與引用數(shù)據(jù)庫的數(shù)據(jù)庫部分A 408的恢復(fù)單元1的數(shù)據(jù)變化具體相關(guān)聯(lián)。作為一特定示例,當(dāng)行集合在數(shù)據(jù)庫中被打開時(shí),可將行集合標(biāo)識(shí)符以及恢復(fù)單元標(biāo)識(shí)符傳遞給次要目錄。主要和次要目錄中的該唯一和專用鏈接使恢復(fù)單元能使用與該數(shù)據(jù)庫中其它恢復(fù)單元無關(guān)的恢復(fù)文件、表格、索引、以及其它數(shù)據(jù)庫數(shù)據(jù)。
恢復(fù)單元無需與數(shù)據(jù)庫其它部分交互就可進(jìn)行恢復(fù)操作的重做(REDO)部分。例如,如果恢復(fù)單元1(414)被用來恢復(fù)其數(shù)據(jù)庫部分的各方面,則恢復(fù)單元2(416)和恢復(fù)單元3(418)可在恢復(fù)單元1操作期間保持在線和活動(dòng)?;謴?fù)單元還可不作交互就進(jìn)行大部分的邏輯取消(UNDO)恢復(fù)操作,但可能需要聯(lián)系其它恢復(fù)單元或數(shù)據(jù)庫以確定已備事務(wù)是已實(shí)行或已放棄的。盡管某些物理恢復(fù)單元沒有呈現(xiàn)或恢復(fù),這允許數(shù)據(jù)庫由可用的多個(gè)物理恢復(fù)單元組成。當(dāng)數(shù)據(jù)庫在線時(shí),其它物理恢復(fù)單元可被復(fù)原和恢復(fù)。
如圖4所示示例性實(shí)施例的體系結(jié)構(gòu)提供了允許數(shù)據(jù)庫部分在各數(shù)據(jù)庫之間移動(dòng)的框架。眾所周知,由于引用系于大多數(shù)頁面上諸如前頁和下頁標(biāo)識(shí)符的文件標(biāo)識(shí)符以及諸如堆陣行標(biāo)識(shí)符指針和B-樹遍歷指針的許多行,當(dāng)前將文件或文件組從一數(shù)據(jù)庫移到另一數(shù)據(jù)庫并不實(shí)用。然而,對于本發(fā)明各方面,文件標(biāo)識(shí)符僅需在恢復(fù)單元內(nèi)唯一。結(jié)果,可將恢復(fù)單元從一數(shù)據(jù)庫復(fù)制或移動(dòng)到另一數(shù)據(jù)庫。圖5提供了該特征的一個(gè)示例。
數(shù)據(jù)庫x 500的恢復(fù)單元b(504)是圖5中數(shù)據(jù)庫x的多個(gè)恢復(fù)單元502、506之一??赡苄枰獙?shù)據(jù)內(nèi)容復(fù)制到圖5的數(shù)據(jù)庫y 510中,并使恢復(fù)單元504的元素變成數(shù)據(jù)庫y的一部分。注意每個(gè)數(shù)據(jù)庫中恢復(fù)單元的數(shù)量并非一要素,因?yàn)閿?shù)據(jù)庫x具有N個(gè)恢復(fù)單元而數(shù)據(jù)庫y在傳送前僅具有兩個(gè)。即,恢復(fù)單元p 512和q 514U可在數(shù)據(jù)庫y 510中預(yù)先存在。
使用本發(fā)明各方面,通過將一恢復(fù)單元用作可傳送單元,恢復(fù)單元504的數(shù)據(jù)可從數(shù)據(jù)庫x 500復(fù)制到y(tǒng) 510。一旦恢復(fù)單元504從數(shù)據(jù)庫x復(fù)制到數(shù)據(jù)庫y,其內(nèi)容就被保留,但它可采用與新數(shù)據(jù)庫相兼容的命名慣例。因而,舊的恢復(fù)單元b(504)一旦被復(fù)制到數(shù)據(jù)庫y就可變成其名字與數(shù)據(jù)庫y兼容的恢復(fù)單元r 504’。數(shù)據(jù)庫y中新添加的恢復(fù)單元504’具有與其相伴恢復(fù)單元512和514不同的名字空間。新的名字空間還可與數(shù)據(jù)庫x中的源恢復(fù)單元504不同。
圖6示出用于本發(fā)明一實(shí)施例的一般方法的流程圖。在步驟605數(shù)據(jù)庫可被分成用作恢復(fù)單元的多個(gè)單元。在步驟610如上所述創(chuàng)建一主要目錄。該主要目錄可包含恢復(fù)單元的邏輯元數(shù)據(jù)元素。盡管多個(gè)恢復(fù)單元可共享單個(gè)日志流文件,在步驟615可創(chuàng)建多個(gè)日志流文件,從而僅有一日志流與一特定恢復(fù)單元相關(guān)聯(lián)。在一實(shí)施例中,最好在有盡可能多的日志流文件是恢復(fù)單元。在步驟620可創(chuàng)建次要目錄。所創(chuàng)建的次要目錄可包含相應(yīng)恢復(fù)單元的物理元數(shù)據(jù)元素。在步驟625可鏈接兩類目錄從而它們指向不同的恢復(fù)單元。因而可建立恢復(fù)單元的框架。然后系統(tǒng)用戶能夠維護(hù)次要目錄從而如果需要運(yùn)用一恢復(fù)單元,可無需影響其它恢復(fù)單元的可用性而離線執(zhí)行。
因而在創(chuàng)建之后,恢復(fù)單元可被用來有利于從同一數(shù)據(jù)庫內(nèi)其它恢復(fù)單元中離線地維護(hù)或恢復(fù)數(shù)據(jù)庫部分。此外,恢復(fù)單元的框架進(jìn)行一個(gè)或多個(gè)恢復(fù)單元從一數(shù)據(jù)庫到其它數(shù)據(jù)庫的全部傳送。圖7示出將結(jié)構(gòu)為恢復(fù)單元的一個(gè)或多個(gè)數(shù)據(jù)庫部分從一數(shù)據(jù)庫復(fù)制到另一數(shù)據(jù)庫的方法的流程圖。
開始,在步驟705,在第一數(shù)據(jù)庫中根據(jù)圖6方法創(chuàng)建一個(gè)或多個(gè)恢復(fù)單元。然后在步驟710可在第二數(shù)據(jù)庫中創(chuàng)建一個(gè)或多個(gè)恢復(fù)單元。為了執(zhí)行傳送,在步驟715必須選擇哪個(gè)恢復(fù)單元需要從第一數(shù)據(jù)庫傳送到第二數(shù)據(jù)庫。然后復(fù)制選定恢復(fù)單元,并因而在步驟720傳送到第二數(shù)據(jù)庫中。假設(shè)所傳送的恢復(fù)單元的結(jié)構(gòu)與第一數(shù)據(jù)庫相匹配,則它們因而系于新的數(shù)據(jù)庫并可訪問第二數(shù)據(jù)庫。
再來討論單個(gè)數(shù)據(jù)庫中的操作,在本發(fā)明一不同實(shí)施例中,多個(gè)文件組可系于同一日志。例如,用戶可具有每個(gè)恢復(fù)單元一文件組。每個(gè)恢復(fù)單元可具有包含其物理元數(shù)據(jù)目錄的主要文件組。該主要文件組可以是用于對恢復(fù)單元和文件管理的訪問方法的目錄。例如,每個(gè)數(shù)據(jù)庫可具有用以引導(dǎo)數(shù)據(jù)庫和其它恢復(fù)單元的主要恢復(fù)單元。該主要恢復(fù)單元可包含所有物理元數(shù)據(jù),而足夠的物理元數(shù)據(jù)用以在起動(dòng)時(shí)發(fā)現(xiàn)和起動(dòng)次要恢復(fù)單元。次要恢復(fù)單元包含邏輯元數(shù)據(jù)的目錄。在一實(shí)施例中,每個(gè)恢復(fù)單元包含一主文件組,而該數(shù)據(jù)庫的主要文件組是主文件組。主要文件組可包含數(shù)據(jù)庫的單個(gè)邏輯目錄和物理元數(shù)據(jù)的充分信息以引導(dǎo)次要恢復(fù)單元。主要文件組可僅在主要恢復(fù)單元中存在。此外,主要恢復(fù)單元可具有發(fā)現(xiàn)非主要或較低層恢復(fù)單元所需的新目錄條目。主文件組的名字可以是CREATE/ALTERDATABASE語法的進(jìn)入點(diǎn)。
在一實(shí)施例中,本發(fā)明可在從華盛頓州Redmond的微軟公司獲得的結(jié)構(gòu)化查尋語言(SQL)環(huán)境中使用。在該環(huán)境中,恢復(fù)單元的狀態(tài)可映射數(shù)據(jù)庫的狀態(tài),而整個(gè)數(shù)據(jù)庫狀態(tài)可系于主要恢復(fù)單元的狀態(tài)中。當(dāng)該恢復(fù)單元在線時(shí),恢復(fù)單元的鎖定空間可與數(shù)據(jù)庫的相同。當(dāng)變?yōu)槟承┢渌鼱顟B(tài)時(shí),可能需要轉(zhuǎn)換成鎖定空間。這種轉(zhuǎn)換可使整個(gè)數(shù)據(jù)庫上的起始瞬時(shí)專用鎖成為必然以使恢復(fù)單元離線,而無需在后來使其再在線。在大多數(shù)情形中,由于初始狀態(tài)不能是在線(ONLINE),實(shí)際上將沒有用戶可見的轉(zhuǎn)換期。在一實(shí)施例中,可取消現(xiàn)有數(shù)據(jù)庫管理的狀態(tài)轉(zhuǎn)換框架但將其應(yīng)用于恢復(fù)單元而不是整個(gè)數(shù)據(jù)庫。在一實(shí)施例中,以下數(shù)據(jù)庫狀態(tài)可應(yīng)用于數(shù)據(jù)庫和恢復(fù)單元ONLINE(在線)OFFLINE(離線)RESTORING(復(fù)原)RECOVERING(恢復(fù))RECOVERY PENDING(等候恢復(fù))SUSPECT(可疑)EMERGENCY(緊急)在SQL環(huán)境中,許多狀態(tài)是缺省或轉(zhuǎn)換狀態(tài)。復(fù)原狀態(tài)(RESTORING)通過嘗試復(fù)原恢復(fù)單元內(nèi)任一文件或文件組而達(dá)成。對于離線(OFFLINE)和緊急(EMERGENCY)狀態(tài),最好需要確定允許管理員強(qiáng)制狀態(tài)改變的語法。最好還需要確定是否有恢復(fù)單元的有用狀態(tài)。理想地,不展現(xiàn)指向“恢復(fù)單元”的任意語法。
在SQL環(huán)境中,在較長恢復(fù)情形中,一旦主要恢復(fù)單元可用數(shù)據(jù)庫即可用。經(jīng)歷較長恢復(fù)的恢復(fù)單元將“恢復(fù)”且所有其文件組都對用戶不可用。然而,當(dāng)可得到數(shù)據(jù)庫的平衡時(shí)可恢復(fù)其它非主要恢復(fù)單元。
重做/取消恢復(fù)可在每個(gè)恢復(fù)單元基礎(chǔ)上進(jìn)行,并最好需要從數(shù)據(jù)庫重新指向恢復(fù)單元的當(dāng)前調(diào)用。無需與數(shù)據(jù)庫工作而僅需與恢復(fù)單元工作并非特定情形而是一般的恢復(fù)?;謴?fù)可以是不同恢復(fù)單元上以及CHECKPOINT(檢查點(diǎn))上多線程的。
在SQL環(huán)境中,數(shù)據(jù)庫的恢復(fù)模式(FULL,SIMPLE,BULK_LOGGED)可應(yīng)用于所有恢復(fù)單元。此外,恢復(fù)單元可提供具有每個(gè)數(shù)據(jù)庫多個(gè)日志而對當(dāng)前數(shù)據(jù)庫組件有較少額外開銷或沒有開銷的機(jī)會(huì)。
在本發(fā)明一方面中,可發(fā)揮基本框架的作用以使表格或數(shù)據(jù)庫部分從一數(shù)據(jù)庫或服務(wù)器簡便地移向/合并到另一數(shù)據(jù)庫或服務(wù)器中。這可通過用邏輯和物理元數(shù)據(jù)進(jìn)行文件復(fù)制/附加或恢復(fù)來完成。有了該能力,不同的恢復(fù)單元可具有在恢復(fù)單元內(nèi)唯一而在數(shù)據(jù)庫內(nèi)不唯一的相同文件標(biāo)識(shí)符。
在一實(shí)施例中,數(shù)據(jù)庫的一內(nèi)部接口DBTABLE可對核心物理元數(shù)據(jù)之外的大多數(shù)組件保持一樣。該物理元數(shù)據(jù)的組件可引用恢復(fù)單元而不是DBTABLE。
在一實(shí)施例中,文件、文件組和日志文件的集合可被用于恢復(fù)單元中。該恢復(fù)單元可通過在CREATE或ALTER DATABASE語句中指定一主文件組來創(chuàng)建。對于CREATE DATABASE,每個(gè)新的主文件組最好跟隨在已指定先前恢復(fù)單元的日志之后。最好,可對每個(gè)主文件組指定日志文件。在該實(shí)施例中,CREATEDATABASE語法圖可如下表達(dá)CREATE DATABASE{database_name}[ON[PRIMARY]<filelist>[,<recoveryunitlist><recoveryunitlist>∷=PRINCIPAL filegroup_name<filelist><filelist>∷=[<filespec>[,...n]][,<filegroup>[,...n]]][LOG ON{<filespec>[,...n]}]]<filespec>∷=[NAME=logical file_name,]FILENAME=′os_file_name′[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,F(xiàn)ILEGROWTH=growth_increment])[,...n]<filegroup>∷=FILEGROUP filegroup_name[CONTAINS{ROWS|FILESTREAM|FILESTREAM_LOG}][DEFAULT][LOG ON{log_filegroup_name|PRIMARY_LOG}]<filespec>[,...n]在當(dāng)前實(shí)施例中,創(chuàng)建一恢復(fù)單元需要用于ALTER DATABASE指令的新語法以使文件列表能被附于文件組名字之后。添加整個(gè)恢復(fù)單元的語句可顯示如下ALTER DATABASE{database_name}ADD PRINCIPAL FILEGROUP{filegroup_name}<filelist>
對于數(shù)據(jù)文件,將文件添加到已存在的恢復(fù)單元可與將文件添加到文件組中相同。對于日志文件,可能需要對ALTER DATABASE語法的擴(kuò)展從而ADD LOGFILE還可指定一文件組名字。該文件組名字應(yīng)是恢復(fù)單元中的主文件組。ALTER DATABASE database_name{ADD LOG FILE<filespec>[,...n][TO FILEGROUP principal_filegroup_name]
類似地,對于將文件組添加到一恢復(fù)單元,指示該恢復(fù)單元的主文件組的一子句可被添加ALTER DATABASE database_nameADD FILEGROUP filegroup_name[TO FILEGROUP principal_filegroup_name]改變恢復(fù)單元的狀態(tài)可與改變數(shù)據(jù)庫狀態(tài)相類似,除了MODIFY FILEGROUP子句可用主文件組名字使用。ALTER DATABASE database_nameMODIFY FILEGROUP filegroup_name SET<optionspec>[,...n][WITH<termination>]RESTORE DATABASE語法通常包含對文件或文件組的選項(xiàng)。作為本發(fā)明一方面,文件或文件組選項(xiàng)也可被擴(kuò)展到RESTORE LOG語句,從而僅影響該恢復(fù)單元的日志。RESTORE LOG{database_name|@database_name_var}<file_or_filegroup>[,...n][FROM<backup_device>[,...n]]注意分配給恢復(fù)單元內(nèi)文件組和文件的數(shù)字標(biāo)識(shí)符(ID)在恢復(fù)單元之間交疊。即,每個(gè)恢復(fù)單元具有對其主要數(shù)據(jù)和日志文件的文件1和2。每個(gè)恢復(fù)單元具有其系統(tǒng)表格的文件組。其原理是多方面的(a)本特征擴(kuò)展每個(gè)數(shù)據(jù)庫的通用文件限制為32,767。
(b)在現(xiàn)有系統(tǒng)中,典型限制為每個(gè)數(shù)據(jù)庫32,767個(gè)文件組。使用恢復(fù)單元,可將文件組的最大數(shù)量倍乘以所允許的恢復(fù)單元數(shù)量。
(c)恢復(fù)單元可以是獨(dú)立的,并可簡便地移到另一數(shù)據(jù)庫中;該移動(dòng)可以是整個(gè)表格或數(shù)據(jù)庫部分向新數(shù)據(jù)庫或服務(wù)器的移動(dòng)。
作為上述交疊的結(jié)果,行標(biāo)識(shí)符在數(shù)據(jù)庫內(nèi)而不是在恢復(fù)單元內(nèi)不再唯一。堆陣上非聚類索引可包含在恢復(fù)單元索引中不存在的行標(biāo)識(shí)符。
在一實(shí)施例中,創(chuàng)建帶有兩個(gè)恢復(fù)單元的數(shù)據(jù)庫可在以下示例中實(shí)現(xiàn)?;謴?fù)單元1僅具一個(gè)文件組;主要恢復(fù)單元?;謴?fù)單元2具有兩個(gè)文件組;主要(SalesGroup1)和次要(SalesGroup2)。CREATE DATABASE SalesON PRIMARY(NAME=SPril_dat,F(xiàn)ILENAME=′D\Data\SPri1 dat.mdf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=15%),(NAME=SPri2_dat,F(xiàn)ILENAME=′E\data\SPri2dt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=15%),LOGON --主要恢復(fù)單元的日志(NAME=′Sales_log′,F(xiàn)ILENAME=′F\log\salelog.ldf′,SIZE=5MB,MAXSIZE=25MB,F(xiàn)ILEGROWTH=5MB),PRINCIPAL FILEGROUP SalesGroup1 --新的恢復(fù)單元(NAME=SGrp1Fi1_dat,F(xiàn)ILENAME=′K\data\SG1Fi1dt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=5),(NAME=SGrp1Fi2_dat,F(xiàn)ILENAME=′L\data\SG1Fi2dt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=5),F(xiàn)ILEGROUP SalesGroup2 --次要恢復(fù)單元中的第二個(gè)文件組(NAME=SGrp2Fi1_dat,F(xiàn)ILENAME=′M\data\SG2Fi1dt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=5),(NAME=SGrp2Fi2_dat,F(xiàn)ILENAME=′N\data\SG2Fi2dt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=5)LOG ON--第二個(gè)恢復(fù)單元的日志(NAME=′Sales_log2′,F(xiàn)ILENAME=′O\log\salelog2.1df′,SIZE=5MB,MAXSIZE=25MB,F(xiàn)ILEGROWTH=5MB)GO在一實(shí)施例中,將表格添加到不同恢復(fù)單元可在以下示例中實(shí)現(xiàn)。為了將表格或索引添加到不同文件組中,用戶可指定將一“ON”子句添加到CREATE TABLE或CREATE INDEX語句中。例如,有了以上創(chuàng)建的添加數(shù)據(jù)庫可具有SalesGroupl恢復(fù)單元上的PurchaseOrderDetail表格,以及PRIMARY恢復(fù)單元上的客戶表格。CREATE TABLE [dbo].[PurchaseOrderDetail]([PurchaseOrderID][int]NOT NULL,[LineNumber][smallint]NOT NULL,[ProductID][int]NULL,[UnitPrice][money]NULL,[OrderQty][smallint]NULL,[ReceivedQty][float]NULL,[RejectedQty][float]NULL,[DueDate][datetime]NULL))ON[SalesGroupl]GOCREATE TABLE[customers](id int NOT NULL,name[nvarchar(200)]NOT NULL,address[nvarchar(2000)]NOT NULL)ON[PRIMARY]GO在一實(shí)施例中,新的ALTER DATABASE語法可被用以將新的恢復(fù)單元添加到現(xiàn)有數(shù)據(jù)庫中。ALTER DATABASE SalesADD PRINCIPAL FILEGROUP SalesGroup3 --第三個(gè)恢復(fù)單元(NAME=SGrp3Fi1_dat,F(xiàn)ILENAME=′P\data\SG3Fildt.ndf′,SIZE=10,MAXSIZE=50,F(xiàn)ILEGROWTH=5)LOGON--第三個(gè)恢復(fù)單元的日志(NAME=′Sales_log3′,F(xiàn)ILENAME=′Q\log\salelog3.ldf′,SIZE=5MB,MAXSIZE=25MB,F(xiàn)ILEGROWTH=5MB)GO在一實(shí)施例中,本發(fā)明一方面展現(xiàn)文件組可用性和恢復(fù)的示例可從以下情形中得到認(rèn)識(shí)。數(shù)據(jù)庫FOO具有主文件組A(主要)、B、C、D和E。假設(shè)包含來自文件組C的數(shù)據(jù)文件的盤出現(xiàn)故障。此外,在來自文件組E所有的文件有物理文件破壞。在數(shù)據(jù)庫起動(dòng)時(shí),文件組A響應(yīng),相應(yīng)地,起始數(shù)據(jù)庫狀態(tài)為在線(ONLINE)。然而,由于缺少文件C的狀態(tài)是“等待恢復(fù)”,且由于破壞E的恢復(fù)失敗而被標(biāo)以“可疑”。在起動(dòng)狀態(tài)后狀態(tài)顯現(xiàn)如下數(shù)據(jù)庫狀態(tài)文件組狀態(tài)FOO->在線 A->在線B->在線C->等待恢復(fù)D->在線E->懷疑當(dāng)電源電纜被拔除時(shí)C盤的問題解決。這被改正且現(xiàn)在文件可用。用戶可使用ALTER DATABASE語句來設(shè)置C在線ALTER DATABASE FOO MODIFY FILEGROUP C SET ONLINEC盤恢復(fù)且現(xiàn)在可用。狀態(tài)現(xiàn)在顯現(xiàn)為數(shù)據(jù)庫狀態(tài)文件組狀態(tài)
FOO->在線A->在線B->在線C->等待恢復(fù)->恢復(fù)->在線D->在線E->懷疑訪問文件組A、B和D的用戶不受C盤轉(zhuǎn)換成在線的影響。D盤的數(shù)據(jù)文件可被物理地破壞且它們需要被恢復(fù)。由于該文件組不是在線地,轉(zhuǎn)換成恢復(fù)(RESTORING)不受其它文件組用戶的影響。整個(gè)數(shù)據(jù)庫的日志是備份的,包括C盤日志的尾部BACKUP LOG foo TO DISK=’e\logtail.dmp’C盤的數(shù)據(jù)文件從最后的數(shù)據(jù)庫備份中恢復(fù)。這將C盤轉(zhuǎn)換成恢復(fù)狀態(tài)RESTORE DATABASE FOO C FROM DISK=‘e\fulldbbackup.dmp’WITH NORECOVERY數(shù)據(jù)庫狀態(tài)文件組狀態(tài)FOO->在線 A->在線B->在線C->等待恢復(fù)->恢復(fù)D->在線E->在線C盤的日志被恢復(fù)到故障點(diǎn),且C盤被恢復(fù)并可用。RESTORE LOG FOO C FROM DISK=‘e\logbackup.dmp’WITH NORECOVERYRETORE LOG FOO C FROM DISK=‘e\logtail.dmp’WITH RECOVERY數(shù)據(jù)庫狀態(tài)文件組狀態(tài)FOO->在線 A->在線B->在線C->恢復(fù)C->復(fù)原C->在線D->在線E->在線示例性計(jì)算裝置圖8和以下討論旨在提供一種本發(fā)明各實(shí)施例可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境的簡要一般說明。盡管以下所述是通用計(jì)算機(jī),但這僅僅是一個(gè)示例,且本發(fā)明各實(shí)施例可用其它計(jì)算裝置實(shí)現(xiàn),諸如具有網(wǎng)絡(luò)/總線互操作性和交互的客戶機(jī)。因而,本發(fā)明各實(shí)施例可在其中包含很少或最少客戶機(jī)資源的包容網(wǎng)絡(luò)主機(jī)服務(wù)的環(huán)境中實(shí)現(xiàn),例如其中客戶機(jī)裝置僅作為網(wǎng)絡(luò)/總線接口的網(wǎng)絡(luò)化環(huán)境,諸如置于裝置中的對象或其它計(jì)算裝置和對象。實(shí)質(zhì)上,可存儲(chǔ)數(shù)據(jù)或從中可檢索數(shù)據(jù)的任何地方都是用于操作的所需或適當(dāng)環(huán)境。
盡管不是必需的,本發(fā)明各實(shí)施例可通過由服務(wù)的開發(fā)者用于裝置或?qū)ο蟮牟僮飨到y(tǒng)來實(shí)現(xiàn),和/或包括在應(yīng)用程序軟件中。軟件在由一臺(tái)或多臺(tái)諸如客戶機(jī)工作站、服務(wù)器或其它裝置的計(jì)算機(jī)執(zhí)行的諸如程序模塊的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中進(jìn)行說明。一般而言,程序模塊包括執(zhí)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)結(jié)構(gòu)的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,在各實(shí)施例中可按需組合或分配程序模塊的功能。另外,本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明在其它計(jì)算機(jī)系統(tǒng)配置中也是可以實(shí)踐的。其它適用于本發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境、和/或配置包括,但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)取款機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程電器消費(fèi)品、網(wǎng)絡(luò)PC、電器、燈、環(huán)境控制元件、小型計(jì)算機(jī)、大型機(jī)等等。本發(fā)明實(shí)施例還可在分布式計(jì)算環(huán)境中實(shí)踐,其中任務(wù)由經(jīng)通信網(wǎng)絡(luò)/總線或其它數(shù)據(jù)傳輸介質(zhì)連接的遠(yuǎn)程處理裝置執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可被置于包括存儲(chǔ)器存儲(chǔ)裝置的本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)介質(zhì)中,且客戶機(jī)節(jié)點(diǎn)可轉(zhuǎn)而用作服務(wù)器節(jié)點(diǎn)。
因而盡管如上明確所述圖8示出了其中可實(shí)現(xiàn)本發(fā)明各實(shí)施例的適當(dāng)計(jì)算系統(tǒng)環(huán)境800的一個(gè)示例,該計(jì)算系統(tǒng)環(huán)境800僅是適當(dāng)計(jì)算環(huán)境的一個(gè)示例,并非旨在提出本發(fā)明實(shí)施例使用或功能性范圍的任何限制。計(jì)算環(huán)境800也不應(yīng)被解釋為對示例性操作環(huán)境800中所示的任一組件或其組合有任何依賴性或任何需求。
參照圖8,實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)810形式的通用計(jì)算裝置。計(jì)算機(jī)810的組件可包括,但不限于,處理單元820、系統(tǒng)存儲(chǔ)器830以及把包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元820的系統(tǒng)總線821。系統(tǒng)總線821可能是若干總線結(jié)構(gòu)類型中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及使用多種總線架構(gòu)的任一種的本地總線。作為示例,而非限制,這些架構(gòu)包括工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線、微信道架構(gòu)(MCA)總線、擴(kuò)展ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和也稱為Mezzanine總線的外圍部件互連(PCI)總線。
計(jì)算機(jī)810通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能被計(jì)算機(jī)810訪問的任何可用介質(zhì),并包括易失和非易失介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)、用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失和非易失介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除只讀存儲(chǔ)器(EEPROM)、閃存或其它存儲(chǔ)器技術(shù)、光盤只讀存儲(chǔ)器(CD-ROM)、可重寫光盤(CDRW)、數(shù)字多功能光盤(DVD)或其它光學(xué)存儲(chǔ)技術(shù)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置、或任何其它可用于存儲(chǔ)所需信息并可由計(jì)算機(jī)810訪問的介質(zhì)。通信介質(zhì)通常包括諸如載波或其它傳輸機(jī)制的調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù),且包括任何信息輸送介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號(hào)”意指以在信號(hào)中信息編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直線連接的有線介質(zhì),和諸如聲學(xué)、射頻、紅外線和其它無線介質(zhì)的無線介質(zhì)。以上任何介質(zhì)的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍中。
系統(tǒng)存儲(chǔ)器830包括諸如只讀存儲(chǔ)器(ROM)831和隨機(jī)存取存儲(chǔ)器(RAM)832的易失和/或非易失存儲(chǔ)器形式的計(jì)算機(jī)可讀介質(zhì)。包含幫助計(jì)算機(jī)810如起動(dòng)時(shí)在元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)833通常存儲(chǔ)在ROM 831中。RAM 832通常包含可被處理單元820立即訪問和/或現(xiàn)時(shí)操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖8示出了操作系統(tǒng)834、應(yīng)用程序835、其它程序模塊836、和程序數(shù)據(jù)837。
計(jì)算機(jī)810還可包括其它可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)介質(zhì)。作為示例,圖8圖示了讀取和寫入不可移動(dòng)、非易失性介質(zhì)的硬盤驅(qū)動(dòng)器841,讀取和寫入可移動(dòng)、非易失磁盤852的磁盤驅(qū)動(dòng)器851,讀取和寫入可移動(dòng)、非易失光盤858,諸如CD ROM、CDRW、DVD或其它光學(xué)介質(zhì)的光盤驅(qū)動(dòng)器855。其它也可用在示例性計(jì)算環(huán)境中的可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,如盒式磁帶、閃存卡、數(shù)字多功能光盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器841通常通過諸如接口840的不可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線821連接,而磁盤驅(qū)動(dòng)器851和光盤驅(qū)動(dòng)器855通常通過諸如接口850的可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線821連接。
如上所述并如圖8所示的盤驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)810提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、和其它數(shù)據(jù)的存儲(chǔ)。在圖8中,例如,硬盤驅(qū)動(dòng)器841被示為存儲(chǔ)操作系統(tǒng)844、應(yīng)用程序845、其它程序模塊846、和程序數(shù)據(jù)847。注意這些組件可以與操作系統(tǒng)834、應(yīng)用程序835、其它程序模塊836、和程序數(shù)據(jù)837相同或不同。在此給予操作系統(tǒng)844、應(yīng)用程序845、其它程序模塊846、和程序數(shù)據(jù)847的不同序號(hào)至少說明他們是不同的副本。用戶可通過輸入裝置如鍵盤862和諸如鼠標(biāo)、跟蹤球或觸摸板等定位裝置861向計(jì)算機(jī)810輸入命令和信息。其它輸入裝置(未示出)可包括話筒、游戲桿、游戲墊、衛(wèi)星接收器、掃描儀等等。這些和其它輸入裝置常常通過與系統(tǒng)總線821耦合的用戶輸入接口860與處理單元820相連,但也可通過諸如并行端口、游戲端口或通用串行總線(USB)的其它接口連接。監(jiān)視器891或其它類型的顯示裝置也可通過諸如視頻接口890的接口與系統(tǒng)總線821相連,而該接口可與視頻存儲(chǔ)器(未示出)通信。除了監(jiān)視器891,計(jì)算機(jī)還可包括諸如揚(yáng)聲器897和打印機(jī)896的其它輸出裝置,它們通過輸出外圍接口895相連。
計(jì)算機(jī)810可以在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)880的邏輯連接的網(wǎng)絡(luò)或分布式環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)880可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等裝置或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),而且通常包括上述與個(gè)人計(jì)算機(jī)810相關(guān)的許多或全部組件,盡管在圖8中僅圖示了存儲(chǔ)器存儲(chǔ)裝置881。圖8中所描繪的邏輯連接包括局域網(wǎng)(LAN)871和廣域網(wǎng)(WAN)873,但也可包括其它網(wǎng)絡(luò)/總線。這樣的網(wǎng)絡(luò)化環(huán)境在家庭、辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)上是常見的。
當(dāng)用于LAN網(wǎng)絡(luò)化環(huán)境中時(shí),計(jì)算機(jī)810通過網(wǎng)絡(luò)接口或適配器870與局域網(wǎng)871連接。當(dāng)用于WAN網(wǎng)絡(luò)化環(huán)境中時(shí),計(jì)算機(jī)810通常包括調(diào)制解調(diào)器872或其它用于在廣域網(wǎng)873,諸如因特網(wǎng)中建立通信的裝置??梢允莾?nèi)置式或外置式的調(diào)制解調(diào)器872與系統(tǒng)總線821通過用戶輸入接口860或其它適當(dāng)機(jī)制連接。在網(wǎng)絡(luò)化環(huán)境中,與計(jì)算機(jī)810相關(guān)的程序模塊或其一部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中。作為示例,而非限制,圖8示出了駐留于存儲(chǔ)裝置881中的遠(yuǎn)程應(yīng)用程序885。應(yīng)當(dāng)理解,所示網(wǎng)絡(luò)連接是示例性的,且也可以使用其它用于在計(jì)算機(jī)間建立通信連接的技術(shù)。
各種分布式計(jì)算框架已經(jīng)和正在按照個(gè)人計(jì)算和因特網(wǎng)的融合進(jìn)行開發(fā)。個(gè)人和商業(yè)用戶等被提供以應(yīng)用程序和計(jì)算裝置的可無隙互操作的和Web啟用的接口,使計(jì)算動(dòng)作更加面向Web瀏覽器或網(wǎng)絡(luò)。
例如,可從微軟公司得到的微軟.NETTM平臺(tái),包括服務(wù)器、諸如基于Web數(shù)據(jù)存儲(chǔ)的基塊服務(wù)、以及可下載裝置軟件。盡管示例性實(shí)施例在此結(jié)合駐留于計(jì)算裝置的軟件進(jìn)行描述,但本發(fā)明一實(shí)施例的一個(gè)或多個(gè)部分還可通過以下來實(shí)現(xiàn)操作系統(tǒng)、應(yīng)用編程接口(API)或協(xié)處理器、顯示裝置及請求對象的任一個(gè)之間的“中介”對象,諸如可通過NETTM的所有語言和服務(wù)以及在其它分布式計(jì)算框架中執(zhí)行、支持或訪問的操作。
如上所述,盡管本發(fā)明的示例性實(shí)施例已結(jié)合各種計(jì)算裝置和網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了描述,其中實(shí)現(xiàn)有益于在數(shù)據(jù)庫備份上執(zhí)行一致性檢查的系統(tǒng)所需的下層概念可應(yīng)用于任何計(jì)算裝置或系統(tǒng)。因而,結(jié)合本發(fā)明各實(shí)施例描述的方法和系統(tǒng)可應(yīng)用于各種應(yīng)用程序和裝置。盡管示例性編程語言、名字和示例在此被選為各種選擇的代表,這些語言、名字和示例并非旨在作限制。本發(fā)明技術(shù)人員將理解,有許多提供獲取與本發(fā)明各實(shí)施例所取得的相同、類似或等效系統(tǒng)和方法的對象代碼的方法。
在此所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時(shí)結(jié)合兩者的組合來實(shí)現(xiàn)。因而,本發(fā)明的方法和裝置,或者其中的某些方面和部分,可取諸如軟盤、CD-ROM、硬盤驅(qū)動(dòng)器、或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)的有形介質(zhì)中包含程序代碼(即指令)形式,其中當(dāng)程序代碼由諸如計(jì)算機(jī)的機(jī)器載入并執(zhí)行時(shí),該機(jī)器成為用于實(shí)踐本發(fā)明的裝置。在可編程計(jì)算機(jī)上的程序代碼執(zhí)行情形中,計(jì)算裝置通常包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元素)、至少一個(gè)輸入設(shè)備、和至少一個(gè)輸出設(shè)備??衫缤ㄟ^使用數(shù)據(jù)處理API等利用本發(fā)明一實(shí)施例的信號(hào)處理服務(wù)的一個(gè)或多個(gè)程序,最好用高級(jí)過程或面向?qū)ο缶幊陶Z言來與計(jì)算機(jī)通信。然而,如果需要這些程序可用匯編或及其語言實(shí)現(xiàn)。在任一情形中,語言可以是編譯或解釋語言,并可與硬件實(shí)現(xiàn)相結(jié)合。
盡管本發(fā)明已結(jié)合各種情形的優(yōu)選實(shí)施例進(jìn)行了描述,要理解可使用其它類似實(shí)施例,或者可對所述實(shí)施例作更改和添加用于執(zhí)行本發(fā)明的系統(tǒng)功能,而沒有偏離本發(fā)明。此外,應(yīng)強(qiáng)調(diào)包括手持式裝置操作系統(tǒng)和其它應(yīng)用程序?qū)S貌僮飨到y(tǒng)的各種計(jì)算機(jī)平臺(tái)是可預(yù)期的,特別是當(dāng)無限網(wǎng)絡(luò)裝置的數(shù)量持續(xù)激增時(shí)。因此,不應(yīng)把本發(fā)明限制在任一單個(gè)實(shí)施例中,而應(yīng)當(dāng)根據(jù)所附權(quán)利要求在廣度和范圍中進(jìn)行解釋。
權(quán)利要求
1.一種在數(shù)據(jù)庫中產(chǎn)生可恢復(fù)單元的方法,其特征在于,所述方法包括將所述數(shù)據(jù)庫分成第一和第二單元;創(chuàng)建包括所述單元邏輯元素的元數(shù)據(jù)的主要目錄,所述主要目錄引用所述單元;創(chuàng)建多個(gè)日志從而任一單元僅與一個(gè)日志相關(guān)聯(lián);創(chuàng)建兩個(gè)次要目錄,每個(gè)次要目錄對應(yīng)于一相應(yīng)單元并包括所述相應(yīng)單元的物理元素的元數(shù)據(jù);鏈接所述主要目錄到所述次要目錄;以及維護(hù)所述次要目錄從而所述第一單元可獨(dú)立于所述第二單元恢復(fù)。
2.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建兩個(gè)次要目錄還包括創(chuàng)建兩個(gè)次要目錄,其中每個(gè)目錄包括對應(yīng)于所述相應(yīng)單元的日志流。
3.如權(quán)利要求1所述的方法,其特征在于,鏈接還包括鏈接所述主要目錄到所述次要目錄,從而在訪問所述第二單元時(shí)第一單元可獨(dú)立于所述第二單元而恢復(fù)。
4.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建主要目錄包括創(chuàng)建包含所述數(shù)據(jù)庫、表格、索引、數(shù)據(jù)類型、約束、存儲(chǔ)過程、觸發(fā)器和文件組的至少之一的元數(shù)據(jù)的目錄。
5.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建兩個(gè)次要目錄包括創(chuàng)建包含頁面、文件、B-樹、堆陣和日志數(shù)據(jù)的至少之一的元數(shù)據(jù)的目錄。
6.如權(quán)利要求1所述的方法,其特征在于,維護(hù)包括將更新分別記錄在所述相應(yīng)次要目錄的相應(yīng)單元中。
7.一種具有一數(shù)據(jù)庫的系統(tǒng),其特征在于,所述系統(tǒng)包括可訪問存儲(chǔ)器的一處理器,所述存儲(chǔ)器具有在執(zhí)行時(shí)執(zhí)行所述方法的指令,所述方法包括將所述數(shù)據(jù)庫分成第一和第二單元;創(chuàng)建包括所述單元邏輯元素的元數(shù)據(jù)的主要目錄,所述主要目錄引用所述單元;創(chuàng)建多個(gè)日志從而任一單元僅與一個(gè)日志相關(guān)聯(lián);創(chuàng)建兩個(gè)次要目錄,每個(gè)次要目錄對應(yīng)于一相應(yīng)單元并包括所述相應(yīng)單元的物理元素的元數(shù)據(jù);鏈接所述主要目錄到所述次要目錄;以及維護(hù)所述次要目錄從而所述第一單元可獨(dú)立于所述第二單元恢復(fù)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,創(chuàng)建兩個(gè)次要目錄的所述方法步驟還包括創(chuàng)建兩個(gè)次要目錄,其中每個(gè)目錄包括對應(yīng)于所述相應(yīng)單元的日志流。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于,鏈接的所述方法步驟還包括鏈接所述主要目錄到所述次要目錄,從而在訪問所述第二單元時(shí)第一單元可獨(dú)立于所述第二單元而恢復(fù)。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,維護(hù)的所述方法步驟包括將更新分別記錄在所述相應(yīng)次要目錄的相應(yīng)單元中。
11.如權(quán)利要求7所述的系統(tǒng),其特征在于,維護(hù)的所述方法步驟包括將更新分別記錄在所述相應(yīng)次要目錄的相應(yīng)單元中。
12.一種具有用于執(zhí)行一方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法包括將所述數(shù)據(jù)庫分成第一和第二單元;創(chuàng)建包括所述單元邏輯元素的元數(shù)據(jù)的主要目錄,所述主要目錄引用所述單元;創(chuàng)建多個(gè)日志從而任一單元僅與一個(gè)日志相關(guān)聯(lián);創(chuàng)建兩個(gè)次要目錄,每個(gè)次要目錄對應(yīng)于一相應(yīng)單元并包括所述相應(yīng)單元的物理元素的元數(shù)據(jù);鏈接所述主要目錄到所述次要目錄;以及維護(hù)所述次要目錄從而所述第一單元可獨(dú)立于所述第二單元恢復(fù)。
13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,創(chuàng)建兩個(gè)次要目錄的所述步驟還包括創(chuàng)建兩個(gè)次要目錄,其中每個(gè)目錄包括對應(yīng)于所述相應(yīng)單元的日志流。
14.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,鏈接的所述步驟還包括鏈接所述主要目錄到所述次要目錄,從而在訪問所述第二單元時(shí)第一單元可獨(dú)立于所述第二單元而恢復(fù)。
15.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,創(chuàng)建主要目錄的所述步驟包括創(chuàng)建包含所述數(shù)據(jù)庫、表格、索引、數(shù)據(jù)類型、約束、存儲(chǔ)過程、觸發(fā)器和文件組的至少之一的元數(shù)據(jù)的目錄。
16.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,創(chuàng)建兩個(gè)次要目錄的所述步驟包括創(chuàng)建包含頁面、文件、B-樹、堆陣和日志數(shù)據(jù)的至少之一的元數(shù)據(jù)的目錄。
17.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,維護(hù)的所述步驟包括將更新分別記錄在所述相應(yīng)次要目錄的相應(yīng)單元中。
全文摘要
數(shù)據(jù)庫內(nèi)多個(gè)可恢復(fù)單元的創(chuàng)建使數(shù)據(jù)庫部分能在維護(hù)和災(zāi)害恢復(fù)操作期間得以重新構(gòu)建。創(chuàng)建恢復(fù)單元的方法包括將數(shù)據(jù)庫分成至少兩個(gè)恢復(fù)單元。創(chuàng)建了與諸如表格、索引和文件組的數(shù)據(jù)庫邏輯元素相關(guān)的元數(shù)據(jù)主要目錄。對每個(gè)恢復(fù)單元?jiǎng)?chuàng)建與諸如頁面、文件、B-樹和日志流的數(shù)據(jù)庫物理元素相關(guān)的元數(shù)據(jù)次要目錄。鏈接該主要和次要元數(shù)據(jù)目錄從而僅有一日志流與任一恢復(fù)單元相關(guān)聯(lián)。然后可運(yùn)用單個(gè)恢復(fù)單元來執(zhí)行恢復(fù)或維護(hù)操作,同時(shí)該數(shù)據(jù)庫的剩余恢復(fù)單元保持在線。
文檔編號(hào)G06F17/30GK1809828SQ200480001711
公開日2006年7月26日 申請日期2004年7月29日 優(yōu)先權(quán)日2004年2月27日
發(fā)明者P·拜恩 申請人:微軟公司