第六章數(shù)據(jù)保護數(shù)據(jù)恢復_第1頁
第六章數(shù)據(jù)保護數(shù)據(jù)恢復_第2頁
第六章數(shù)據(jù)保護數(shù)據(jù)恢復_第3頁
第六章數(shù)據(jù)保護數(shù)據(jù)恢復_第4頁
第六章數(shù)據(jù)保護數(shù)據(jù)恢復_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4數(shù)據(jù)庫備份與恢復,6.4.1數(shù)據(jù)庫恢復概述 故障是不可避免的 計算機硬件故障 系統(tǒng)軟件和應(yīng)用軟件的錯誤 操作員的失誤 惡意的破壞 故障的影響 運行事務(wù)非正常中斷,影響數(shù)據(jù)的正確性 破壞數(shù)據(jù)庫,全部或部分數(shù)據(jù)丟失,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,數(shù)據(jù)庫管理系統(tǒng)對故障的對策 DBMS提供恢復子系統(tǒng) 保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)(一致狀態(tài)或完整狀態(tài)) 保證事務(wù)ACID 恢復技術(shù)是衡量系統(tǒng)優(yōu)劣的重要指標,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.2故障的種類,一、事務(wù)故障 某個事務(wù)在運行過程中由于種種原因,未能運行至正常終止點就夭折了。,第六章數(shù)據(jù)保

2、護數(shù)據(jù)恢復,事務(wù)故障分為兩類 可預料的 可通過事務(wù)程序本身發(fā)現(xiàn) 例:銀行轉(zhuǎn)帳事務(wù) 不可預料的 事務(wù)沒有在預定的結(jié)束點結(jié)束而引起的故障 運算溢出 并發(fā)事務(wù)發(fā)生死鎖而被選中撤銷該事務(wù) 違反了某些完整性限制等,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,BEGIN TRANSACTION 讀賬戶甲的余額BALANCE; BALANCE=BALANCE-AMOUNT;(AMOUNT 為轉(zhuǎn)賬金額) 寫回BALANCE; IF(BALANCE 0 ) THEN 打印金額不足,不能轉(zhuǎn)賬; ROLLBACK;(撤銷剛才的修改,恢復事務(wù)) ELSE 讀賬戶乙的余額BALANCE1; BALANCE1=BALANCE1+AMOUNT

3、; 寫回BALANCE1; COMMIT; ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,事務(wù)內(nèi)部更多的故障是不可預料的 事務(wù)故障僅指這類不可預料的故障,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,發(fā)生事務(wù)故障時,夭折的事務(wù)可能已把對數(shù)據(jù)庫的部分修改寫回磁盤 事務(wù)故障的恢復 撤消事務(wù)(UNDO) 強行回滾(ROLLBACK)該事務(wù),清除該事務(wù)對數(shù)據(jù)庫的所有修改,使得這個事務(wù)象根本沒有啟動過一樣,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,二、系統(tǒng)故障(軟故障) 造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動。 整個系統(tǒng)的正常運行突然被破壞 所有正在運行的事務(wù)都非正常終止 內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失 外部存儲設(shè)備上的數(shù)據(jù)未受影響,第六章數(shù)據(jù)保護數(shù)據(jù)

4、恢復,系統(tǒng)故障的常見原因 操作系統(tǒng)或DBMS代碼錯誤 操作員操作失誤 特定類型的硬件錯誤(如CPU故障) 突然停電,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,系統(tǒng)故障的恢復 發(fā)生系統(tǒng)故障時,事務(wù)未提交 系統(tǒng)重新啟動時,恢復程序強行撤消(UNDO)所有未完成事務(wù) 發(fā)生系統(tǒng)故障時,事務(wù)已提交,但緩沖區(qū)中的信息尚未完全寫回到磁盤上。 系統(tǒng)重新啟動時,恢復程序重做(REDO)所有已提交的事務(wù),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,三、介質(zhì)故障(硬故障) 外存故障 硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失。 介質(zhì)故障比前兩類故障的可能性小得多,但破壞性大得多,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,介質(zhì)故障的常見原因 硬件故障 磁盤損壞 磁頭碰

5、撞 操作系統(tǒng)的某種潛在錯誤 瞬時強磁場干擾,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,介質(zhì)故障的恢復 裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個時刻的數(shù)據(jù)副本 重做自此時始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,四、計算機病毒 一種人為的故障或破壞,是一些惡作劇者研制的一種計算機程序 可以繁殖和傳播 危害 破壞、盜竊系統(tǒng)中的數(shù)據(jù) 破壞系統(tǒng)文件,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,各類故障,對數(shù)據(jù)庫的影響有兩種可能性 數(shù)據(jù)庫本身被破壞 數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是由于事務(wù)的運行被非正常終止造成的。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.3恢復的實現(xiàn)技術(shù),恢復操作的基本原理 冗余 利用存儲在系統(tǒng)其

6、它地方的冗余數(shù)據(jù)來重建數(shù)據(jù)庫中已被破壞或不正確的那部分數(shù)據(jù) 恢復的實現(xiàn)技術(shù) 復雜 一個大型數(shù)據(jù)庫產(chǎn)品,恢復子系統(tǒng)的代碼要占全部代碼的10%以上,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,恢復機制涉及的關(guān)鍵問題 1. 如何建立冗余數(shù)據(jù) 數(shù)據(jù)轉(zhuǎn)儲(backup) 登錄日志文件(logging) 2. 如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.3.1數(shù)據(jù)轉(zhuǎn)儲,一、數(shù)據(jù)轉(zhuǎn)儲 數(shù)據(jù)轉(zhuǎn)儲:DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。 這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,二、轉(zhuǎn)儲的作用 轉(zhuǎn)儲是數(shù)據(jù)庫恢復中采用的基本技術(shù)。 一旦系統(tǒng)發(fā)生介質(zhì)故障,數(shù)據(jù)庫遭到

7、破壞,可將后備副本重新裝入,把數(shù)據(jù)庫恢復起來。 重裝后備副本只能將數(shù)據(jù)庫恢復到轉(zhuǎn)儲時的狀態(tài),要想恢復到故障發(fā)生時的狀態(tài),必須重新運行自轉(zhuǎn)儲以后的所有更新事務(wù)。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,故障發(fā)生點 轉(zhuǎn)儲 運行事務(wù) 正常運行 Ta Tb Tf 重裝后備副本 重新運行事務(wù) 恢復 ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,三、轉(zhuǎn)儲方法 1靜態(tài)轉(zhuǎn)儲與動態(tài)轉(zhuǎn)儲 靜態(tài)轉(zhuǎn)儲 在系統(tǒng)中無運行事務(wù)時進行轉(zhuǎn)儲 轉(zhuǎn)儲開始時數(shù)據(jù)庫處于一致性狀態(tài) 轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,優(yōu)點 實現(xiàn)簡單 缺點 降低了數(shù)據(jù)庫的可用性 轉(zhuǎn)儲必須等用戶事務(wù)結(jié)束 新的事務(wù)必須等轉(zhuǎn)儲結(jié)束,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用靜態(tài)

8、轉(zhuǎn)儲副本進行恢復,故障發(fā)生點 靜態(tài)轉(zhuǎn)儲 運行事務(wù) 正常運行 Ta Tb Tf 重裝后備副本 恢復 ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用靜態(tài)轉(zhuǎn)儲副本進行恢復,運行事務(wù) 故障發(fā)生點 動態(tài)轉(zhuǎn)儲 運行事務(wù) 正常運行 Ta Tb Tf 重裝后備副本 利用日志文件恢復 恢復 ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,動態(tài)轉(zhuǎn)儲 轉(zhuǎn)儲操作與用戶事務(wù)并發(fā)進行 轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改 優(yōu)點 不用等待正在運行的用戶事務(wù)結(jié)束 不會影響新事務(wù)的運行 缺點 不能保證副本中的數(shù)據(jù)正確有效 例:在轉(zhuǎn)儲期間的某個時刻Tc,系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到磁帶上,而在下一時刻Td,某一事務(wù)將A改為200。轉(zhuǎn)儲結(jié)束后,后備副本上的A已是過時的數(shù)據(jù)

9、了。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用動態(tài)轉(zhuǎn)儲得到的副本進行故障恢復 需要把動態(tài)轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件 后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用動態(tài)轉(zhuǎn)儲副本進行恢復,Ta Tb Tf 動態(tài)轉(zhuǎn)儲 運行事務(wù) 故障發(fā)生點 正常運行 登記日志文件 登記新日志文件 轉(zhuǎn)儲日志文件 重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復 恢復到一 致性狀態(tài),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,2海量轉(zhuǎn)儲與增量轉(zhuǎn)儲 海量轉(zhuǎn)儲:每次轉(zhuǎn)儲全部數(shù)據(jù)庫。 增量轉(zhuǎn)儲:只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù)。 海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較 從恢復角度看,使用海量轉(zhuǎn)儲得到的后備副本進行恢復往

10、往更方便 如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,3轉(zhuǎn)儲方法小結(jié) 轉(zhuǎn)儲方法分類,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,轉(zhuǎn)儲策略 應(yīng)定期進行數(shù)據(jù)轉(zhuǎn)儲,制作后備副本。 轉(zhuǎn)儲是十分耗費時間和資源的,不能頻繁進行。 DBA應(yīng)該根據(jù)數(shù)據(jù)庫使用情況確定適當?shù)霓D(zhuǎn)儲周期和轉(zhuǎn)儲方法。 例: 每天晚上進行動態(tài)增量轉(zhuǎn)儲 每周進行一次動態(tài)海量轉(zhuǎn)儲 每月進行一次靜態(tài)海量轉(zhuǎn)儲,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.3.2登記日志文件,一、日志文件的內(nèi)容 1.日志文件(log) 用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。 2. 日志文件的格式 以記錄為單位的日志文件 以數(shù)據(jù)塊為單位的日志文件,第六章

11、數(shù)據(jù)保護數(shù)據(jù)恢復,3. 日志文件內(nèi)容 以記錄為單位的日志文件內(nèi)容 各個事務(wù)的開始標記(BEGIN TRANSACTION) 各個事務(wù)的結(jié)束標記(COMMIT或ROLLBACK) 各個事務(wù)的所有更新操作 與事務(wù)有關(guān)的內(nèi)部更新操作 以上為日志文件中的一個日志記錄 (log record),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,4. 基于記錄的日志文件 每條日志記錄的內(nèi)容 事務(wù)標識 操作類型(插入、刪除或修改) 操作對象(記錄ID、Block NO.) 更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值) 更新后數(shù)據(jù)的新值(對刪除操作而言, 此項為空值),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,5. 基于數(shù)據(jù)塊的日志文件 每條日志記錄

12、的內(nèi)容 事務(wù)標識(標明是那個事務(wù)) 操作對象(記錄ID、Block NO.) 更新前數(shù)據(jù)所在的整個數(shù)據(jù)塊的值(對插入操作而言,此項為空值) 更新后整個數(shù)據(jù)塊的值(對刪除操作而言, 此項為空值),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,二、日志文件的用途 1用途 進行事務(wù)故障恢復 進行系統(tǒng)故障恢復 協(xié)助后備副本進行介質(zhì)故障恢復,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,2與靜態(tài)轉(zhuǎn)儲后備副本配合進行介質(zhì)故障恢復 靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)已是一致性的數(shù)據(jù) 如果靜態(tài)轉(zhuǎn)儲完成后,仍能定期轉(zhuǎn)儲日志文件,則在出現(xiàn)介質(zhì)故障重裝數(shù)據(jù)副本后,可以利用這些日志文件副本對已完成的事務(wù)進行重做處理 不必重新運行那些已完成的事務(wù)程序就可把數(shù)據(jù)庫恢復到故障前某一時刻

13、的正確狀態(tài),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,故障發(fā)生點 靜態(tài)轉(zhuǎn)儲 運行事務(wù) 正常運行 Ta Tb Tf 登記日志文件 重裝后備副本 利用日志文件恢復事務(wù) 繼續(xù)運行 介質(zhì)故障恢復 登記日志文件 ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,上圖中: 系統(tǒng)在Ta時刻停止運行事務(wù),進行數(shù)據(jù)庫轉(zhuǎn)儲 在Tb時刻轉(zhuǎn)儲完畢,得到Tb時刻的數(shù)據(jù)庫一致性副本 系統(tǒng)運行到Tf時刻發(fā)生故障 為恢復數(shù)據(jù)庫,首先由DBA重裝數(shù)據(jù)庫后備副本,將數(shù)據(jù)庫恢復至Tb時刻的狀態(tài) 重新運行自TbTf時刻的所有更新事務(wù),把數(shù)據(jù)庫恢復到故障發(fā)生前的一致狀態(tài),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,3介質(zhì)故障恢復:LOG FILE + 動態(tài)轉(zhuǎn)儲后備副本 動態(tài)轉(zhuǎn)儲數(shù)據(jù)庫,同時轉(zhuǎn)儲同

14、一時點的日志文件 后備副本與該日志文件結(jié)合起來才能將數(shù)據(jù)庫恢復到一致性狀態(tài)。 利用這些日志文件副本進一步恢復事務(wù),避免重新運行事務(wù)程序。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,三、登記日志文件的原則 為保證數(shù)據(jù)庫是可恢復的,登記日志文件時必須遵循兩條原則 登記的次序嚴格按并行事務(wù)執(zhí)行的時間次序 必須先寫日志文件,后寫數(shù)據(jù)庫 寫日志文件操作:把表示這個修改的日志記錄寫到日志文件 寫數(shù)據(jù)庫操作:把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,為什么要先寫日志文件? 寫數(shù)據(jù)庫和寫日志文件是兩個不同的操作 在這兩個操作之間可能發(fā)生故障 如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復這個

15、修改。 如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.4恢復策略,6.4.4.1事務(wù)故障的恢復 事務(wù)故障:事務(wù)在運行至正常終止點前被中止。 恢復方法 由恢復子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對數(shù)據(jù)庫進行的修改 事務(wù)故障的恢復由系統(tǒng)自動完成,不需要用戶干預,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,事務(wù)故障的恢復步驟 1. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。 2. 對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”(Befor Image, BI)寫入數(shù)據(jù)庫。

16、插入操作,“更新前的值”為空,則相當于做刪除操作 刪除操作,“更新后的值”為空,則相當于做插入操作 若是修改操作,則用BI 代替 AI(After Image),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,3. 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。 4. 如此處理下去,直至讀到此事務(wù)的開始標記,事務(wù)故障恢復就完成了。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.4.2系統(tǒng)故障的恢復,系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因 一些未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫 一些已提交事務(wù)對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,恢復方法 Undo 故障發(fā)生時未完成的事務(wù) Redo 已完

17、成的事務(wù) 系統(tǒng)故障的恢復由系統(tǒng)在重新啟動時自動完成,不需要用戶干預,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,系統(tǒng)故障的恢復步驟 1.正向掃描日志文件(即從頭掃描日志文件) Redo隊列:在故障發(fā)生前已經(jīng)提交的事務(wù) T1,T3,T8 Undo隊列:故障發(fā)生時尚未完成的事務(wù) T2,T4,T5,T6,T7,T9 ,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,2. 對Undo隊列事務(wù)進行UNDO處理 反向掃描日志文件,對每個UNDO事務(wù)的更新操作執(zhí)行逆操作 T2,T4,T5,T6,T7,T9 3. 對Redo隊列事務(wù)進行REDO處理 正向掃描日志文件,對每個REDO事務(wù)重新 執(zhí)行登記的操作 T1,T3,T8,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.

18、4.4.3介質(zhì)故障的恢復,介質(zhì)故障的恢復方法 重裝數(shù)據(jù)庫,使數(shù)據(jù)庫恢復到一致性狀態(tài) 重做已完成的事務(wù),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,介質(zhì)故障的恢復步驟 1. 裝入最新的后備數(shù)據(jù)庫副本,使數(shù)據(jù)庫恢復到最近一次轉(zhuǎn)儲時的一致性狀態(tài)。 對于靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,裝入后數(shù)據(jù)庫即處于一致性狀態(tài) 對于動態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,還須同時裝入轉(zhuǎn)儲時刻的日志文件副本,利用與恢復系統(tǒng)故障相同的方法(即REDO+UNDO),才能將數(shù)據(jù)庫恢復到一致性狀態(tài)。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用靜態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài),故障發(fā)生點 靜態(tài)轉(zhuǎn)儲 運行事務(wù) 正常運行 Ta Tb Tf 登記日志文件 重裝后備副本 恢復 ,第六章數(shù)據(jù)保

19、護數(shù)據(jù)恢復,利用動態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài),Ta Tb Tf 動態(tài)轉(zhuǎn)儲 運行事務(wù) 故障發(fā)生點 正常運行 登記日志文件 登記新日志文件 轉(zhuǎn)儲日志文件 重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復 恢復到一 致性狀態(tài),第六章數(shù)據(jù)保護數(shù)據(jù)恢復,2. 裝入有關(guān)的日志文件副本,重做已完成的事務(wù)。 首先掃描日志文件,找出故障發(fā)生時已提交的事務(wù)的標識,將其記入重做隊列。 然后正向掃描日志文件,對重做隊列中的所有事務(wù)進行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,介質(zhì)故障的恢復需要DBA介入 DBA的工作 重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本 執(zhí)行系統(tǒng)提供的恢復

20、命令 具體的恢復操作仍由DBMS完成,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,6.4.5具有檢查點的恢復技術(shù),一、問題的提出 兩個問題 搜索整個日志將耗費大量的時間 REDO處理:重新執(zhí)行,浪費了大量時間,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,解決方案 具有檢查點(checkpoint)的恢復技術(shù) 在日志文件中增加檢查點記錄(checkpoint) 增加重新開始文件 恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,二、檢查點技術(shù) 檢查點記錄的內(nèi)容 建立檢查點時刻所有正在執(zhí)行的事務(wù)清單 這些事務(wù)最近一個日志記錄的地址 重新開始文件的內(nèi)容 記錄各個檢查點記錄在日志文件中的地址,第六章

21、數(shù)據(jù)保護數(shù)據(jù)恢復,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,在檢查點維護日志文件 將當前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上。 在日志文件中寫入一個檢查點記錄。 將當前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中。 把檢查點記錄在日志文件中的地址寫入一個重新開始文件。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,建立檢查點 定期 按照預定的一個時間間隔 不定期 按照某種規(guī)則,如日志文件已寫滿一半建立一個檢查點,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,三、利用檢查點的恢復策略 當事務(wù)T在一個檢查點之前提交,T對數(shù)據(jù)庫所做的修改已寫入數(shù)據(jù)庫。 在進行恢復處理時,沒有必要對事務(wù)T執(zhí)行REDO操作,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,利用檢查點的恢復步驟 1、從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,2、由該檢查點記錄得到檢查點建立時刻所有正在執(zhí)行的事務(wù)清單ACTIVE-LIST 建立兩個事務(wù)隊列 UNDO-LIST REDO-LIST 把ACTIVE-LIST暫時放入UNDO-LIST隊列,REDO隊列暫為空。,第六章數(shù)據(jù)保護數(shù)據(jù)恢復,3、從檢查點開始正向掃描日志文件,直到日志文件結(jié)束 如有新開始的事務(wù)Ti,把Ti暫時放入UNDO-LIST隊列 如有提交的事務(wù)T

溫馨提示

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

最新文檔

評論

0/150

提交評論