第10章數(shù)據(jù)庫恢復(fù)_第1頁
第10章數(shù)據(jù)庫恢復(fù)_第2頁
第10章數(shù)據(jù)庫恢復(fù)_第3頁
第10章數(shù)據(jù)庫恢復(fù)_第4頁
第10章數(shù)據(jù)庫恢復(fù)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第10章 數(shù)據(jù)庫恢復(fù) 第十章第十章 數(shù)據(jù)庫恢復(fù)技術(shù)數(shù)據(jù)庫恢復(fù)技術(shù) 計算機系統(tǒng)中、以及是不可避免的,這些故障輕則造成運行事物非正常的中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分數(shù)據(jù)丟失。恢復(fù)恢復(fù):數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)據(jù)庫(亦稱為一致狀態(tài)或完整狀態(tài))的功能,這就是數(shù)據(jù)庫的。恢復(fù)的基本原理:恢復(fù)的基本原理:是利用數(shù)據(jù)的備份(冗余),也就是說數(shù)據(jù)庫中,任一部分的信息,可以根據(jù)備份的數(shù)據(jù)來恢復(fù)。第10章 數(shù)據(jù)庫恢復(fù) 10.1 10.1 事務(wù)的基本概念事務(wù)的基本概念一、事務(wù)一、事務(wù)事務(wù)事務(wù):用戶定義的一個數(shù)據(jù)庫操作序列,是一個不可分割:用戶定義的一個數(shù)據(jù)庫操作序列,是一個不可

2、分割的工作單位。的工作單位。eg:eg:在關(guān)系數(shù)據(jù)庫中,一個事務(wù)可以是一條在關(guān)系數(shù)據(jù)庫中,一個事務(wù)可以是一條SQLSQL語句、一組語句、一組SQLSQL語句或整個程序。語句或整個程序。 事務(wù)和程序不同,一個程序中可包含多個事務(wù)。事務(wù)和程序不同,一個程序中可包含多個事務(wù)。定義事務(wù)的語句有三條:定義事務(wù)的語句有三條: BEGIN TRANSACTION COMMIT ROLLBACK第10章 數(shù)據(jù)庫恢復(fù) 事務(wù)通常是以事務(wù)通常是以BEGIN TRANSACTIONBEGIN TRANSACTION開始,以開始,以COMMITCOMMIT或或ROLLBACKROLLBACK結(jié)束。結(jié)束。 COMMITC

3、OMMIT表示提交,即提交事務(wù)的所有操作。具體地說表示提交,即提交事務(wù)的所有操作。具體地說就是將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)就是將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)據(jù)庫中去,事務(wù)正常結(jié)束。據(jù)庫中去,事務(wù)正常結(jié)束。 ROLLBACKROLLBACK表示回滾,即在事務(wù)運行的過程中發(fā)生了某表示回滾,即在事務(wù)運行的過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)執(zhí)行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所種故障,事務(wù)不能繼續(xù)執(zhí)行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的操作全部撤消,滾回到事務(wù)開始時的狀態(tài)。這有已完成的操作全部撤消,滾回到事務(wù)開始時的狀態(tài)。這里的操作指對數(shù)據(jù)庫的更新操作。里的操作指對數(shù)據(jù)庫的更

4、新操作。 第10章 數(shù)據(jù)庫恢復(fù) 二、事物的特性二、事物的特性1 1、原子性、原子性 事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。要么都做,要么都不做。 2 2、一致性、一致性 事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。因此當數(shù)據(jù)庫只包含成功事務(wù)提交的到另一個一致性狀態(tài)。因此當數(shù)據(jù)庫只包含成功事務(wù)提交的結(jié)果時,就說數(shù)據(jù)庫處于一致性狀態(tài)。如果數(shù)據(jù)庫系統(tǒng)運行結(jié)果時,就說數(shù)據(jù)庫處于一致性狀態(tài)。如果數(shù)據(jù)庫系統(tǒng)運行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,系統(tǒng)將事務(wù)中中

5、發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的操作全部撤消,滾回到事務(wù)開始時對數(shù)據(jù)庫的所有已完成的操作全部撤消,滾回到事務(wù)開始時的一致狀態(tài)。的一致狀態(tài)。 第10章 數(shù)據(jù)庫恢復(fù) 3 3、隔離性、隔離性 一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。的各個事務(wù)之間不能互相干擾。 4 4、持續(xù)性、持續(xù)性( (永久性永久性) ) 持續(xù)性也稱永久性(持續(xù)性也稱永久性(PermanencePermanen

6、ce),指一個事務(wù)一旦提),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有任何影響。其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有任何影響。 第10章 數(shù)據(jù)庫恢復(fù) 事物是恢復(fù)和并發(fā)控制的基本單位,事物特性可能遭事物是恢復(fù)和并發(fā)控制的基本單位,事物特性可能遭到破壞的因素有:到破壞的因素有:多個事物并發(fā)運行時,不同事物的操作交叉執(zhí)行。多個事物并發(fā)運行時,不同事物的操作交叉執(zhí)行。事物在運行過程中被強行停止。事物在運行過程中被強行停止。 在第一種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證多個事務(wù)在第一種情況下,數(shù)據(jù)庫管

7、理系統(tǒng)必須保證多個事務(wù)的交叉運行不影響這些事務(wù)的原子性。在第二種情況下,的交叉運行不影響這些事務(wù)的原子性。在第二種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證被強行終止的事務(wù)對數(shù)據(jù)庫和其數(shù)據(jù)庫管理系統(tǒng)必須保證被強行終止的事務(wù)對數(shù)據(jù)庫和其它事務(wù)沒有任何影響。它事務(wù)沒有任何影響。 這些就是數(shù)據(jù)庫管理系統(tǒng)中恢復(fù)機制和并發(fā)控制機制這些就是數(shù)據(jù)庫管理系統(tǒng)中恢復(fù)機制和并發(fā)控制機制的責(zé)任。的責(zé)任。第10章 數(shù)據(jù)庫恢復(fù) 10.2 10.2 故障的種類故障的種類一、事物內(nèi)部的故障一、事物內(nèi)部的故障可通過事物程序本身發(fā)現(xiàn)??赏ㄟ^事物程序本身發(fā)現(xiàn)。非預(yù)期,不能由事物程序處理。非預(yù)期,不能由事物程序處理。事物撤消事物撤消(UNDO

8、)(UNDO):事物故障意味著事物沒有到達預(yù)期的終:事物故障意味著事物沒有到達預(yù)期的終點點(COMMIT(COMMIT或者顯示的或者顯示的ROLLBACK)ROLLBACK),因此,數(shù)據(jù)庫可能處于,因此,數(shù)據(jù)庫可能處于不正確狀態(tài)。系統(tǒng)的恢復(fù)程序要在不影響其它事物運行的不正確狀態(tài)。系統(tǒng)的恢復(fù)程序要在不影響其它事物運行的情況下,強行回滾情況下,強行回滾(ROLLBACK)(ROLLBACK)該事物,即撤消該事物已經(jīng)該事物,即撤消該事物已經(jīng)作出的對數(shù)據(jù)庫的任何修改。作出的對數(shù)據(jù)庫的任何修改。第10章 數(shù)據(jù)庫恢復(fù) 二、系統(tǒng)故障二、系統(tǒng)故障 ( (軟故障軟故障) ) 系統(tǒng)故障指造成系統(tǒng)停止運轉(zhuǎn)的任何事件

9、,使得系統(tǒng)系統(tǒng)故障指造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動。要重新啟動?;謴?fù)子系統(tǒng)恢復(fù)子系統(tǒng):必須在系統(tǒng)重新啟動后時讓所有非正常終止:必須在系統(tǒng)重新啟動后時讓所有非正常終止的事物回滾,強行撤消的事物回滾,強行撤消 (UNDO)(UNDO)所有未完成事物;并且還需所有未完成事物;并且還需要重做要重做(REDO)(REDO)所有已提交的事物,以將數(shù)據(jù)庫真正恢復(fù)到所有已提交的事物,以將數(shù)據(jù)庫真正恢復(fù)到一致狀態(tài)。一致狀態(tài)。第10章 數(shù)據(jù)庫恢復(fù) 三、介質(zhì)故障(硬故障)三、介質(zhì)故障(硬故障) 指外存故障。指外存故障。 eg:eg:磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。磁盤損壞、磁頭碰撞,瞬時強磁場

10、干擾等。 介質(zhì)故障發(fā)生的可能性很小,但破壞性最大。介質(zhì)故障發(fā)生的可能性很小,但破壞性最大。四、計算機病毒四、計算機病毒 計算機病毒是具有破壞性、可以自我復(fù)制的計算機程計算機病毒是具有破壞性、可以自我復(fù)制的計算機程序。計算機病毒已成為計算機系統(tǒng)的主要威脅,自然也是序。計算機病毒已成為計算機系統(tǒng)的主要威脅,自然也是數(shù)據(jù)庫系統(tǒng)的主要威脅。因此數(shù)據(jù)庫一旦被破壞仍要用恢數(shù)據(jù)庫系統(tǒng)的主要威脅。因此數(shù)據(jù)庫一旦被破壞仍要用恢復(fù)技術(shù)把數(shù)據(jù)庫加以恢復(fù)。復(fù)技術(shù)把數(shù)據(jù)庫加以恢復(fù)。第10章 數(shù)據(jù)庫恢復(fù) 總結(jié):總結(jié):各類故障對數(shù)據(jù)庫的影響各類故障對數(shù)據(jù)庫的影響: 數(shù)據(jù)庫本身被破壞。數(shù)據(jù)庫本身被破壞。 數(shù)據(jù)庫沒有被破壞,但

11、數(shù)據(jù)可能不正確,這是由事物數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是由事物的運行被非正常中止造成的。的運行被非正常中止造成的?;謴?fù)的基本原理恢復(fù)的基本原理:數(shù)據(jù)庫中任何一部分被破壞的或數(shù)據(jù)庫中任何一部分被破壞的或不正確的數(shù)據(jù)可以根據(jù)存儲在系統(tǒng)別處的冗余數(shù)據(jù)來重建。不正確的數(shù)據(jù)可以根據(jù)存儲在系統(tǒng)別處的冗余數(shù)據(jù)來重建。第10章 數(shù)據(jù)庫恢復(fù) 10.3 10.3 恢復(fù)的實現(xiàn)技術(shù)恢復(fù)的實現(xiàn)技術(shù)一、恢復(fù)的基本原則和實現(xiàn)方法一、恢復(fù)的基本原則和實現(xiàn)方法1 1、基本原則、基本原則 將數(shù)據(jù)庫中的數(shù)據(jù)備份(重復(fù)存儲)和記錄日志文件。將數(shù)據(jù)庫中的數(shù)據(jù)備份(重復(fù)存儲)和記錄日志文件。當出現(xiàn)故障時,就可利用數(shù)據(jù)庫的數(shù)據(jù)備

12、份或者日志文件當出現(xiàn)故障時,就可利用數(shù)據(jù)庫的數(shù)據(jù)備份或者日志文件來恢復(fù)。來恢復(fù)。如何建立冗余數(shù)據(jù)如何建立冗余數(shù)據(jù)如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復(fù)。如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復(fù)。數(shù)據(jù)轉(zhuǎn)儲數(shù)據(jù)轉(zhuǎn)儲登記日志文件登記日志文件第10章 數(shù)據(jù)庫恢復(fù) 2 2、實現(xiàn)步驟、實現(xiàn)步驟 (1)(1)周期性地把整個數(shù)據(jù)庫拷貝(轉(zhuǎn)儲)到備份的存儲器上。周期性地把整個數(shù)據(jù)庫拷貝(轉(zhuǎn)儲)到備份的存儲器上。(2)(2)每次修改(包括增、刪、改)數(shù)據(jù)庫時,將運行日志的每次修改(包括增、刪、改)數(shù)據(jù)庫時,將運行日志的特殊數(shù)據(jù)集中進行登記,包括修改對象的舊值和新值。特殊數(shù)據(jù)集中進行登記,包括修改對象的舊值和新值。 (3)(

13、3)因故障而使數(shù)據(jù)庫本身遭破壞時,要重新裝入最新的存因故障而使數(shù)據(jù)庫本身遭破壞時,要重新裝入最新的存檔拷貝,然后利用運行日志重做在這個拷貝之后實現(xiàn)的一檔拷貝,然后利用運行日志重做在這個拷貝之后實現(xiàn)的一切修改。切修改。(4)(4)由于故障,雖未使數(shù)據(jù)庫遭破壞,但使某些內(nèi)容不可靠,由于故障,雖未使數(shù)據(jù)庫遭破壞,但使某些內(nèi)容不可靠,在這種情況下,要利用日志撤消所有在這種情況下,要利用日志撤消所有“不可靠不可靠”的修改,的修改,把數(shù)據(jù)庫恢復(fù)到某一正確狀態(tài)。把數(shù)據(jù)庫恢復(fù)到某一正確狀態(tài)。第10章 數(shù)據(jù)庫恢復(fù) 二、轉(zhuǎn)儲二、轉(zhuǎn)儲 DBADBA定期地將整個數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保定期地將整個數(shù)據(jù)庫復(fù)制到

14、磁帶或另一個磁盤上保存起來的過程。存起來的過程。( (這些備用的數(shù)據(jù)文本稱為后備副本這些備用的數(shù)據(jù)文本稱為后備副本) )。正常運行Ta Tb Tf轉(zhuǎn) 儲 故障發(fā)生點運行事務(wù) 恢 復(fù) 重裝后備副本重新運行事務(wù)圖7.1 轉(zhuǎn)儲和恢復(fù) 如圖,系統(tǒng)在如圖,系統(tǒng)在T Ta a時刻停止運行事務(wù)進行數(shù)據(jù)庫轉(zhuǎn)儲,在時刻停止運行事務(wù)進行數(shù)據(jù)庫轉(zhuǎn)儲,在T Tb b時刻轉(zhuǎn)儲完畢,時刻轉(zhuǎn)儲完畢,得到得到T Tb b時刻的數(shù)據(jù)庫一致性副本。系統(tǒng)運行到時刻的數(shù)據(jù)庫一致性副本。系統(tǒng)運行到T Tf f時刻發(fā)生故障。為恢復(fù)數(shù)據(jù)時刻發(fā)生故障。為恢復(fù)數(shù)據(jù)庫,首先由庫,首先由DBADBA重裝數(shù)據(jù)庫后備副本,將數(shù)據(jù)庫恢復(fù)至重裝數(shù)據(jù)庫后備

15、副本,將數(shù)據(jù)庫恢復(fù)至T Tb b時刻的狀態(tài),然后重時刻的狀態(tài),然后重新運行自新運行自T Tb b T Tf f時刻的所有更新事務(wù),這樣就把數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的時刻的所有更新事務(wù),這樣就把數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的一致狀態(tài)。一致狀態(tài)。第10章 數(shù)據(jù)庫恢復(fù) 轉(zhuǎn)儲非常耗費時間和資源,不能頻繁進行。轉(zhuǎn)儲非常耗費時間和資源,不能頻繁進行。DBADBA應(yīng)根據(jù)應(yīng)根據(jù)數(shù)據(jù)庫使用情況確定一個適當?shù)霓D(zhuǎn)儲周期。數(shù)據(jù)庫使用情況確定一個適當?shù)霓D(zhuǎn)儲周期。 按轉(zhuǎn)儲狀態(tài)不同可分為:靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。按轉(zhuǎn)儲狀態(tài)不同可分為:靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。1 1、靜態(tài)轉(zhuǎn)儲、靜態(tài)轉(zhuǎn)儲 指轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫進行任何存取、修改活動。指轉(zhuǎn)儲

16、期間不允許對數(shù)據(jù)庫進行任何存取、修改活動。2 2、動態(tài)轉(zhuǎn)儲、動態(tài)轉(zhuǎn)儲 指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改。即轉(zhuǎn)儲和指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改。即轉(zhuǎn)儲和用戶事務(wù)可以并發(fā)執(zhí)行。用戶事務(wù)可以并發(fā)執(zhí)行。第10章 數(shù)據(jù)庫恢復(fù) 靜態(tài)存儲簡單,靜態(tài)存儲簡單,但但必須等待用戶事物結(jié)束才能運行,必須等待用戶事物結(jié)束才能運行,同樣新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束才能執(zhí)行。降低了數(shù)據(jù)庫同樣新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束才能執(zhí)行。降低了數(shù)據(jù)庫的可用性。的可用性。 動態(tài)轉(zhuǎn)儲,可克服靜態(tài)轉(zhuǎn)儲的缺點,它不用等待正在動態(tài)轉(zhuǎn)儲,可克服靜態(tài)轉(zhuǎn)儲的缺點,它不用等待正在運行的用戶事務(wù)結(jié)束,也不會影響新事務(wù)的運行。但是,運行的用戶事務(wù)結(jié)

17、束,也不會影響新事務(wù)的運行。但是,動態(tài)轉(zhuǎn)儲結(jié)束時后援副本上的數(shù)據(jù)并不能保證正確有效。動態(tài)轉(zhuǎn)儲結(jié)束時后援副本上的數(shù)據(jù)并不能保證正確有效。為此,必須為此,必須。這樣,后援副本加上日志。這樣,后援副本加上日志文件就能把數(shù)據(jù)庫恢復(fù)到某一時刻的正確狀態(tài)。文件就能把數(shù)據(jù)庫恢復(fù)到某一時刻的正確狀態(tài)。第10章 數(shù)據(jù)庫恢復(fù) 按轉(zhuǎn)儲方式可分為按轉(zhuǎn)儲方式可分為海量轉(zhuǎn)儲海量轉(zhuǎn)儲和和增量轉(zhuǎn)儲增量轉(zhuǎn)儲。海量轉(zhuǎn)儲海量轉(zhuǎn)儲 指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。增量轉(zhuǎn)儲增量轉(zhuǎn)儲 指每次只轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)。指每次只轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)。轉(zhuǎn)儲狀態(tài)轉(zhuǎn)儲狀態(tài)動態(tài)轉(zhuǎn)儲動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲轉(zhuǎn)轉(zhuǎn) 儲儲方方 式

18、式海量存儲海量存儲動態(tài)海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量存儲增量存儲動態(tài)增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲第10章 數(shù)據(jù)庫恢復(fù) 三、日志文件三、日志文件 日志文件記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。日志文件記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。 DBMSDBMS把所有用戶對數(shù)據(jù)庫操作的全部情況都記錄到一把所有用戶對數(shù)據(jù)庫操作的全部情況都記錄到一個文件方式稱為更新日志,記錄的文件稱為日志文件。個文件方式稱為更新日志,記錄的文件稱為日志文件。1 1、日志文件的作用、日志文件的作用事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件。事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件。在動態(tài)轉(zhuǎn)儲方式中必

19、須建立日志文件,后援副本和日志在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫。文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件。在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件。第10章 數(shù)據(jù)庫恢復(fù) 恢 復(fù) 重裝后備副本利用日志文件恢復(fù)事務(wù)圖7.2 利用日志文件恢復(fù)正常運行Ta Tb Tf轉(zhuǎn)儲(靜態(tài)) 故障發(fā)生點運行事務(wù)登記日志文件繼續(xù)運行登記日志文件 當數(shù)據(jù)庫毀壞后可重新裝入后援副本把數(shù)據(jù)庫恢復(fù)到當數(shù)據(jù)庫毀壞后可重新裝入后援副本把數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲結(jié)束時刻的正確狀態(tài),然后利用日志文件,把已完成轉(zhuǎn)儲結(jié)束時刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進

20、行重做處理,對故障發(fā)生時尚未完成的事務(wù)進行的事務(wù)進行重做處理,對故障發(fā)生時尚未完成的事務(wù)進行撤消處理。這樣不必重新運行那些已完成的事務(wù)程序就可撤消處理。這樣不必重新運行那些已完成的事務(wù)程序就可把數(shù)據(jù)庫恢復(fù)到故障前某一時刻的正確狀態(tài)。把數(shù)據(jù)庫恢復(fù)到故障前某一時刻的正確狀態(tài)。第10章 數(shù)據(jù)庫恢復(fù) 2、日志文件的格式和內(nèi)容、日志文件的格式和內(nèi)容格式格式以記錄為單位的日志文件以記錄為單位的日志文件以數(shù)據(jù)塊為單位的日志文件。以數(shù)據(jù)塊為單位的日志文件。對于以記錄為單位的日志文件,日志文件中的內(nèi)容包括:對于以記錄為單位的日志文件,日志文件中的內(nèi)容包括: 各個事務(wù)的開始各個事務(wù)的開始(BEGIN TRANSA

21、CTION)(BEGIN TRANSACTION)標記標記 各個事務(wù)的結(jié)束各個事務(wù)的結(jié)束(COMMIT(COMMIT或或ROLL BACK)ROLL BACK)標記標記 各個事務(wù)的所有更新操作各個事務(wù)的所有更新操作 第10章 數(shù)據(jù)庫恢復(fù) 這里每個事務(wù)開始的標記、每個事務(wù)的結(jié)束標記和每個這里每個事務(wù)開始的標記、每個事務(wù)的結(jié)束標記和每個更新操作均作為日志文件中的一個更新操作均作為日志文件中的一個日志記錄日志記錄(log record)(log record)。 每個日志記錄的內(nèi)容主要包括:每個日志記錄的內(nèi)容主要包括: 事務(wù)標識(標明是那個事務(wù))事務(wù)標識(標明是那個事務(wù)) 操作的類型(插入、刪除或修

22、改)操作的類型(插入、刪除或修改) 操作對象操作對象( (記錄內(nèi)部標識記錄內(nèi)部標識) ) 更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值) 更新后數(shù)據(jù)的新值(對刪除操作而言更新后數(shù)據(jù)的新值(對刪除操作而言, , 此項為空值)此項為空值) 第10章 數(shù)據(jù)庫恢復(fù) 3 3、登記日志文件、登記日志文件 事務(wù)在運行過程中,系統(tǒng)把事務(wù)開始、事務(wù)結(jié)束事務(wù)在運行過程中,系統(tǒng)把事務(wù)開始、事務(wù)結(jié)束( (包括包括COMMITCOMMIT和和ROLLBACK)ROLLBACK)、以及對數(shù)據(jù)庫的插入、刪除、修改等、以及對數(shù)據(jù)庫的插入、刪除、修改等每一個登記記錄每一個登記記錄(

23、log(log記錄記錄) )存放到日志文件中。存放到日志文件中。 每個記錄包括的主要內(nèi)容有:執(zhí)行操作的事務(wù)標識,每個記錄包括的主要內(nèi)容有:執(zhí)行操作的事務(wù)標識,操作類型,更新前數(shù)據(jù)的舊值,更新后的新值。操作類型,更新前數(shù)據(jù)的舊值,更新后的新值。 登記日志文件時必須遵循兩條原則:登記日志文件時必須遵循兩條原則: 1. 1. 登記的次序嚴格按并發(fā)事務(wù)執(zhí)行的時間次序。登記的次序嚴格按并發(fā)事務(wù)執(zhí)行的時間次序。2. 2. 必須先寫日志文件,后寫數(shù)據(jù)庫。必須先寫日志文件,后寫數(shù)據(jù)庫。第10章 數(shù)據(jù)庫恢復(fù) 把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中和把表示這個修改的日把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中和把表示這個修改的日志記錄寫到日

24、志文件中是兩個不同的操作。有可能在這兩志記錄寫到日志文件中是兩個不同的操作。有可能在這兩個操作之間發(fā)生故障,即這兩個寫操作只完成了一個。如個操作之間發(fā)生故障,即這兩個寫操作只完成了一個。如果先寫了數(shù)據(jù)庫修改,而在運行記錄中沒有登記下這個修果先寫了數(shù)據(jù)庫修改,而在運行記錄中沒有登記下這個修改,則以后就無法恢復(fù)這個修改了。如果先寫日志,但沒改,則以后就無法恢復(fù)這個修改了。如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復(fù)時只不過是多執(zhí)行一次不有修改數(shù)據(jù)庫,按日志文件恢復(fù)時只不過是多執(zhí)行一次不必要的必要的UNDOUNDO操作,并不會影響數(shù)據(jù)庫的正確性。所以為了操作,并不會影響數(shù)據(jù)庫的正確性。所以為了安全

25、,一定要先寫日志文件,即首先把日志記錄寫到日志安全,一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數(shù)據(jù)庫的修改。這就是文件中,然后寫數(shù)據(jù)庫的修改。這就是“先寫日志文件先寫日志文件”的原則。的原則。 第10章 數(shù)據(jù)庫恢復(fù) 10.4 10.4 恢復(fù)策略恢復(fù)策略一、事務(wù)故障的恢復(fù)一、事務(wù)故障的恢復(fù) 事務(wù)故障是指事務(wù)在運行至正常終止點前被中止,這事務(wù)故障是指事務(wù)在運行至正常終止點前被中止,這時恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(時恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(UNDOUNDO)此事務(wù)已對數(shù))此事務(wù)已對數(shù)據(jù)庫進行的修改。據(jù)庫進行的修改。 事務(wù)故障的恢復(fù)是由系統(tǒng)自動完成的事務(wù)故障的恢復(fù)是由系統(tǒng)自動完

26、成的, ,對用戶透明。對用戶透明。第10章 數(shù)據(jù)庫恢復(fù) 事務(wù)故障的恢復(fù)步驟事務(wù)故障的恢復(fù)步驟是:是: 1.1.反向掃描文件日志(即從最后向前掃描日志文件),查反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。找該事務(wù)的更新操作。2.2.對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更更新前的值新前的值”寫入數(shù)據(jù)庫。這樣,如果記錄中是插入操作,寫入數(shù)據(jù)庫。這樣,如果記錄中是插入操作,則相當于做刪除操作(因此時則相當于做刪除操作(因此時“更新前的值更新前的值”為空)。若為空)。若記錄中是刪除操作,則做插入操作,若是修改操作,則相記錄中是

27、刪除操作,則做插入操作,若是修改操作,則相當于用修改前值代替修改后值。當于用修改前值代替修改后值。 3.3.繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。并做同樣處理。 4.4.如此處理下去,直至讀到此事務(wù)的開始標記,事務(wù)故障如此處理下去,直至讀到此事務(wù)的開始標記,事務(wù)故障恢復(fù)就完成了?;謴?fù)就完成了。 第10章 數(shù)據(jù)庫恢復(fù) 二、系統(tǒng)故障的恢復(fù)二、系統(tǒng)故障的恢復(fù) 系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因:一是未完成系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因:一是未完成事務(wù)對數(shù)據(jù)庫的更新可能已寫入數(shù)據(jù)庫,二是已提交事務(wù)對事務(wù)對數(shù)據(jù)庫的更新可能已寫入

28、數(shù)據(jù)庫,二是已提交事務(wù)對數(shù)據(jù)庫的更新可能還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫。因此數(shù)據(jù)庫的更新可能還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫。因此恢復(fù)操作就是要撤消故障發(fā)生時未完成的事務(wù),重做已完成恢復(fù)操作就是要撤消故障發(fā)生時未完成的事務(wù),重做已完成的事務(wù)。的事務(wù)。 系統(tǒng)故障的恢復(fù)由系統(tǒng)在重啟動時自動完成,不需用系統(tǒng)故障的恢復(fù)由系統(tǒng)在重啟動時自動完成,不需用戶干預(yù)。戶干預(yù)。 第10章 數(shù)據(jù)庫恢復(fù) 系統(tǒng)故障的恢復(fù)步驟系統(tǒng)故障的恢復(fù)步驟是:是:1. 1. 正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交事務(wù),正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交事務(wù),將其事務(wù)標識記入重做將其事務(wù)標識記入重做(REDO)(REDO)隊

29、列。同時找出故障發(fā)生時隊列。同時找出故障發(fā)生時尚未完成的事務(wù),將其事務(wù)標識記入撤消隊列。尚未完成的事務(wù),將其事務(wù)標識記入撤消隊列。 2. 2. 對撤消隊列中的各個事務(wù)進行撤消對撤消隊列中的各個事務(wù)進行撤消(UNDO)(UNDO)處理。處理。 進行進行UNDOUNDO處理的方法是,反向掃描日志文件,對每個處理的方法是,反向掃描日志文件,對每個UNDOUNDO事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新更新前的值前的值”寫入數(shù)據(jù)庫。寫入數(shù)據(jù)庫。3. 對重做隊列中的各個事務(wù)進行重做對重做隊列中的各個事務(wù)進行重做(REDO)處理。處理。 進行進行REDO處理的

30、方法是:正向掃描日志文件,對每個處理的方法是:正向掃描日志文件,對每個REDO事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中“更新后的值更新后的值”寫入數(shù)據(jù)庫。寫入數(shù)據(jù)庫。 第10章 數(shù)據(jù)庫恢復(fù) 三、介質(zhì)故障的恢復(fù)三、介質(zhì)故障的恢復(fù) 發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,這是最嚴重的一種故障,恢復(fù)方法是重裝數(shù)據(jù)庫,然后重做這是最嚴重的一種故障,恢復(fù)方法是重裝數(shù)據(jù)庫,然后重做已完成的事務(wù)。已完成的事務(wù)。具體做法具體做法是:是: 1. 1. 裝入最新的數(shù)據(jù)庫后備副本(離故障發(fā)生時刻最近的轉(zhuǎn)裝

31、入最新的數(shù)據(jù)庫后備副本(離故障發(fā)生時刻最近的轉(zhuǎn)儲副本),使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時的一致性狀態(tài)。儲副本),使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時的一致性狀態(tài)。 2. 2. 裝入相應(yīng)的日志文件副本(轉(zhuǎn)儲結(jié)束時刻的日志文件副裝入相應(yīng)的日志文件副本(轉(zhuǎn)儲結(jié)束時刻的日志文件副本),重做已完成的事務(wù)。本),重做已完成的事務(wù)。 介質(zhì)故障的恢復(fù)需要介質(zhì)故障的恢復(fù)需要DBADBA介入。但介入。但DBADBA只需要重裝最近轉(zhuǎn)只需要重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本,然后執(zhí)行系統(tǒng)提儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復(fù)命令即可,具體的恢復(fù)操作仍由供的恢復(fù)命令即可,具體的恢復(fù)操作仍由DBM

32、SDBMS完成。完成。 第10章 數(shù)據(jù)庫恢復(fù) 10.5 10.5 數(shù)據(jù)庫鏡像數(shù)據(jù)庫鏡像 介質(zhì)故障是對系統(tǒng)影響最為嚴重的一種故障。系統(tǒng)出介質(zhì)故障是對系統(tǒng)影響最為嚴重的一種故障。系統(tǒng)出現(xiàn)介質(zhì)故障后,用戶應(yīng)用全部中斷,恢復(fù)起來也比較費時?,F(xiàn)介質(zhì)故障后,用戶應(yīng)用全部中斷,恢復(fù)起來也比較費時。而且而且DBADBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫,這也加重了必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫,這也加重了DBADBA的負擔(dān)。的負擔(dān)。如果不及時而正確地轉(zhuǎn)儲數(shù)據(jù)庫,一旦發(fā)生介質(zhì)故障,會如果不及時而正確地轉(zhuǎn)儲數(shù)據(jù)庫,一旦發(fā)生介質(zhì)故障,會造成較大的損失。造成較大的損失。第10章 數(shù)據(jù)庫恢復(fù) 隨著磁盤容量越來越大,價格越來越便宜,為避免磁盤介質(zhì)出現(xiàn)故障影響數(shù)據(jù)庫的可用性,許多數(shù)據(jù)庫管理系統(tǒng)提供了數(shù)據(jù)庫鏡像(數(shù)據(jù)庫鏡像(MirrorMirror)功能用于數(shù)據(jù)庫恢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論