第十章 數(shù)據(jù)庫恢復(fù)技術(shù).ppt_第1頁
第十章 數(shù)據(jù)庫恢復(fù)技術(shù).ppt_第2頁
第十章 數(shù)據(jù)庫恢復(fù)技術(shù).ppt_第3頁
第十章 數(shù)據(jù)庫恢復(fù)技術(shù).ppt_第4頁
第十章 數(shù)據(jù)庫恢復(fù)技術(shù).ppt_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,數(shù)據(jù)庫系統(tǒng)概論 An Introduction to Database System 第十章 數(shù)據(jù)庫恢復(fù)技術(shù),第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.1 事務(wù)的基本概念,一、事務(wù)定義 二、事務(wù)的特性,一、事務(wù)(Transaction),定義 一個(gè)數(shù)據(jù)庫操作序列 一個(gè)不可分割的工作單位 恢復(fù)和并發(fā)控制的基本單位 事務(wù)和程序比較 在關(guān)系數(shù)據(jù)庫中,一個(gè)事務(wù)可以是一條或多條SQL語句,也可以包含一個(gè)或多個(gè)程序。 一個(gè)程序通

2、常包含多個(gè)事務(wù),定義事務(wù),顯式定義方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 語句1 SQL 語句1 SQL 語句2 SQL 語句2 。 。 COMMIT ROLLBACK 隱式方式 當(dāng)用戶沒有顯式地定義事務(wù)時(shí), DBMS按缺省規(guī)定自動劃分事務(wù),二、事務(wù)的特性(ACID特性),事務(wù)的ACID特性: 原子性(Atomicity) 一致性(Consistency) 隔離性(Isolation) 持續(xù)性(Durability ),第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.

3、5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.2 數(shù)據(jù)庫恢復(fù)概述,故障是不可避免的 系統(tǒng)故障:計(jì)算機(jī)軟、硬件故障 人為故障:操作員的失誤、惡意的破壞等。 數(shù)據(jù)庫的恢復(fù) 把數(shù)據(jù)庫從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為一致狀態(tài)或完整狀態(tài)),第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),故障的種類,事務(wù)內(nèi)部的故障 系統(tǒng)故障 介質(zhì)故障 計(jì)算機(jī)病毒,一、事務(wù)內(nèi)部的故障,事務(wù)內(nèi)部的故障 有的是

4、可以通過事務(wù)程序本身發(fā)現(xiàn)的(見下面轉(zhuǎn)賬事 務(wù)的例子) 有的是非預(yù)期的,事務(wù)內(nèi)部的故障(續(xù)),例如,銀行轉(zhuǎn)賬事務(wù),這個(gè)事務(wù)把一筆金額從一個(gè)賬戶甲轉(zhuǎn)給另一個(gè)賬戶乙。 BEGIN TRANSACTION 讀賬戶甲的余額BALANCE; BALANCE=BALANCE-AMOUNT;(AMOUNT 為轉(zhuǎn)賬金額) 寫回BALANCE; IF(BALANCE 0 ) THEN 打印金額不足,不能轉(zhuǎn)賬; ROLLBACK;(撤銷剛才的修改,恢復(fù)事務(wù)) ELSE 讀賬戶乙的余額BALANCE1; BALANCE1=BALANCE1+AMOUNT; 寫回BALANCE1; COMMIT; ,事務(wù)內(nèi)部的故障(續(xù))

5、,這個(gè)例子所包括的兩個(gè)更新操作要么全部完成要么全部不做。否則就會使數(shù)據(jù)庫處于不一致狀態(tài),例如只把賬戶甲的余額減少了而沒有把賬戶乙的余額增加。 在這段程序中若產(chǎn)生賬戶甲余額不足的情況,應(yīng)用程序可以發(fā)現(xiàn)并讓事務(wù)滾回,撤銷已作的修改,恢復(fù)數(shù)據(jù)庫到正確狀態(tài)。,事務(wù)內(nèi)部的故障(續(xù)),事務(wù)內(nèi)部更多的故障是非預(yù)期的,是不能由應(yīng)用程序處理的。 運(yùn)算溢出 并發(fā)事務(wù)發(fā)生死鎖而被選中撤銷該事務(wù) 違反了某些完整性限制等 以后,事務(wù)故障僅指這類非預(yù)期的故障 事務(wù)故障的恢復(fù):撤消事務(wù)(UNDO),二、系統(tǒng)故障,系統(tǒng)故障 稱為軟故障,是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事件,使得 系統(tǒng)要重新啟動。 整個(gè)系統(tǒng)的正常運(yùn)行突然被破壞 所有

6、正在運(yùn)行的事務(wù)都非正常終止 不破壞數(shù)據(jù)庫 內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失,系統(tǒng)故障的常見原因,特定類型的硬件錯(cuò)誤(如CPU故障) 操作系統(tǒng)故障 DBMS代碼錯(cuò)誤 系統(tǒng)斷電,系統(tǒng)故障的恢復(fù),發(fā)生系統(tǒng)故障時(shí),事務(wù)未提交 恢復(fù)策略:強(qiáng)行撤消(UNDO)所有未完成事務(wù) 發(fā)生系統(tǒng)故障時(shí),事務(wù)已提交,但緩沖區(qū)中的信息尚未完全寫回到磁盤上。 恢復(fù)策略:重做(REDO)所有已提交的事務(wù),三、介質(zhì)故障,介質(zhì)故障 稱為硬故障,指外存故障 磁盤損壞 磁頭碰撞 操作系統(tǒng)的某種潛在錯(cuò)誤 瞬時(shí)強(qiáng)磁場干擾,介質(zhì)故障的恢復(fù),裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個(gè)時(shí)刻的數(shù)據(jù)副本 重做自此時(shí)始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記

7、入數(shù)據(jù)庫,四、計(jì)算機(jī)病毒,計(jì)算機(jī)病毒 一種人為的故障或破壞,是一些惡作劇者研制的一種計(jì)算機(jī)程序 可以繁殖和傳播 危害 破壞、盜竊系統(tǒng)中的數(shù)據(jù) 破壞系統(tǒng)文件,故障小結(jié),各類故障,對數(shù)據(jù)庫的影響有兩種可能性 一是數(shù)據(jù)庫本身被破壞 二是數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是由于事務(wù)的運(yùn)行被非正常終止造成的。,第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.4 恢復(fù)的實(shí)現(xiàn)技術(shù),恢復(fù)操作的基本原理:冗余 利用存儲在系統(tǒng)其它地方的冗余

8、數(shù)據(jù)來重建數(shù)據(jù)庫中已被破壞或不正確的那部分?jǐn)?shù)據(jù) 恢復(fù)機(jī)制涉及的關(guān)鍵問題 如何建立冗余數(shù)據(jù) 數(shù)據(jù)轉(zhuǎn)儲(backup) 登錄日志文件(logging) 如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫恢復(fù),10.4.1 數(shù)據(jù)轉(zhuǎn)儲,一、什么是數(shù)據(jù)轉(zhuǎn)儲 二、轉(zhuǎn)儲方法,一、什么是數(shù)據(jù)轉(zhuǎn)儲,轉(zhuǎn)儲是指DBA將整個(gè)數(shù)據(jù)庫復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程,備用的數(shù)據(jù)稱為后備副本或后援副本 如何使用 數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入 重裝后備副本只能將數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時(shí)的狀態(tài)-,要想恢復(fù)到故障發(fā)生時(shí)的狀態(tài),必須重新運(yùn)行自轉(zhuǎn)儲以后的所有更新事務(wù)。,二、轉(zhuǎn)儲方法,1靜態(tài)轉(zhuǎn)儲與動態(tài)轉(zhuǎn)儲 2海量轉(zhuǎn)儲與增量轉(zhuǎn)儲 3轉(zhuǎn)儲方法小結(jié),

9、靜態(tài)轉(zhuǎn)儲,在系統(tǒng)中無運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲操作 轉(zhuǎn)儲開始時(shí)數(shù)據(jù)庫處于一致性狀態(tài) 轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動 得到的一定是一個(gè)數(shù)據(jù)一致性的副本 優(yōu)點(diǎn):實(shí)現(xiàn)簡單 缺點(diǎn):降低了數(shù)據(jù)庫的可用性 轉(zhuǎn)儲必須等待正運(yùn)行的用戶事務(wù)結(jié)束 新的事務(wù)必須等轉(zhuǎn)儲結(jié)束,動態(tài)轉(zhuǎn)儲,轉(zhuǎn)儲操作與用戶事務(wù)并發(fā)進(jìn)行 轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行存取或修改 優(yōu)點(diǎn) 不用等待正在運(yùn)行的用戶事務(wù)結(jié)束 不會影響新事務(wù)的運(yùn)行 動態(tài)轉(zhuǎn)儲的缺點(diǎn) 不能保證副本中的數(shù)據(jù)正確有效 例在轉(zhuǎn)儲期間的某個(gè)時(shí)刻Tc,系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到磁帶上,而在下一時(shí)刻Td,某一事務(wù)將A改為200。轉(zhuǎn)儲結(jié)束后,后備副本上的A已是過時(shí)的數(shù)據(jù)了,動態(tài)轉(zhuǎn)儲,利用

10、動態(tài)轉(zhuǎn)儲得到的副本進(jìn)行故障恢復(fù) 需要把動態(tài)轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件 后備副本加上日志文件才能把數(shù)據(jù)庫恢復(fù)到某一時(shí)刻的正確狀態(tài),2海量轉(zhuǎn)儲與增量轉(zhuǎn)儲,海量轉(zhuǎn)儲: 每次轉(zhuǎn)儲全部數(shù)據(jù)庫 增量轉(zhuǎn)儲: 只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù) 海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較 從恢復(fù)角度看,使用海量轉(zhuǎn)儲得到的后備副本進(jìn)行恢復(fù)往往更方便 但如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式更實(shí)用更有效,3轉(zhuǎn)儲方法小結(jié),轉(zhuǎn)儲方法分類,10.4 恢復(fù)的實(shí)現(xiàn)技術(shù),10.4.1 數(shù)據(jù)轉(zhuǎn)儲 10.4.2 登記日志文件,10.4.2 登記日志文件,一、日志文件的格式和內(nèi)容 二、日志文件的作用 三、登記日志文件

11、,一、日志文件的格式和內(nèi)容,什么是日志文件 日志文件(log)是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文 件 日志文件的格式 以記錄為單位的日志文件 以數(shù)據(jù)塊為單位的日志文件,日志文件的格式和內(nèi)容(續(xù)),以記錄為單位的日志文件內(nèi)容 各個(gè)事務(wù)的開始標(biāo)記(BEGIN TRANSACTION) 各個(gè)事務(wù)的結(jié)束標(biāo)記(COMMIT或ROLLBACK) 各個(gè)事務(wù)的所有更新操作 以上均作為日志文件中的一個(gè)日志記錄 (log record),日志文件的格式和內(nèi)容(續(xù)),以記錄為單位的日志文件,每條日志記錄的內(nèi)容 事務(wù)標(biāo)識(標(biāo)明是哪個(gè)事務(wù)) 操作類型(插入、刪除或修改) 操作對象(記錄內(nèi)部標(biāo)識) 更新前數(shù)據(jù)的舊值(對

12、插入操作而言,此項(xiàng)為空值) 更新后數(shù)據(jù)的新值(對刪除操作而言, 此項(xiàng)為空值),日志文件的格式和內(nèi)容(續(xù)),以數(shù)據(jù)塊為單位的日志文件,每條日志記錄的內(nèi)容 事務(wù)標(biāo)識(標(biāo)明是那個(gè)事務(wù)) 被更新的數(shù)據(jù)塊,二、日志文件的作用,進(jìn)行事務(wù)故障恢復(fù) 進(jìn)行系統(tǒng)故障恢復(fù) 協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù),利用靜態(tài)轉(zhuǎn)儲副本和日志文件進(jìn)行恢復(fù),靜態(tài)轉(zhuǎn)儲 運(yùn)行事務(wù) 正常運(yùn)行 Ta Tb Tf 重裝后備副本 利用日志文件恢復(fù) 繼續(xù)運(yùn)行 恢復(fù) ,登記日志文件,利用靜態(tài)轉(zhuǎn)儲副本和日志文件進(jìn)行恢復(fù)(續(xù)),上圖中: 系統(tǒng)在Ta時(shí)刻停止運(yùn)行事務(wù),進(jìn)行數(shù)據(jù)庫轉(zhuǎn)儲 在Tb時(shí)刻轉(zhuǎn)儲完畢,得到Tb時(shí)刻的數(shù)據(jù)庫一致性副本 系統(tǒng)運(yùn)行到Tf時(shí)刻發(fā)生

13、故障 為恢復(fù)數(shù)據(jù)庫,首先由DBA重裝數(shù)據(jù)庫后備副本,將數(shù)據(jù)庫恢復(fù)至Tb時(shí)刻的狀態(tài) 重新運(yùn)行自TbTf時(shí)刻的所有更新事務(wù),把數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的一致狀態(tài),三、登記日志文件,基本原則 登記的次序嚴(yán)格按并行事務(wù)執(zhí)行的時(shí)間次序 必須先寫日志文件,后寫數(shù)據(jù)庫 寫日志文件操作:把表示這個(gè)修改的日志記錄 寫到日志文件 寫數(shù)據(jù)庫操作:把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中,原則:先寫日志文件,登記日志文件(續(xù)),為什么要先寫日志文件 寫數(shù)據(jù)庫和寫日志文件是兩個(gè)不同的操作 在這兩個(gè)操作之間可能發(fā)生故障 如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下這個(gè)修改,則以后就無法恢復(fù)這個(gè)修改了 如果先寫日志,但沒有修改數(shù)據(jù)庫,按

14、日志文件恢復(fù)時(shí)只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性,第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.5 恢復(fù)策略,10.5.1 事務(wù)故障的恢復(fù) 10.5.2 系統(tǒng)故障的恢復(fù) 10.5.3 介質(zhì)故障的恢復(fù),10.5.1 事務(wù)故障的恢復(fù),事務(wù)故障:事務(wù)在運(yùn)行至正常終止點(diǎn)前被終止 恢復(fù)方法 由恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對數(shù)據(jù)庫進(jìn)行的修改 事務(wù)故障的恢復(fù)由系統(tǒng)自動完成,對用戶是透明的

15、,不需要用戶干預(yù),事務(wù)故障的恢復(fù)步驟,1. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。 2. 對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值” 寫入數(shù)據(jù)庫。 插入操作, “更新前的值”為空,則相當(dāng)于做刪除操作 刪除操作,“更新后的值”為空,則相當(dāng)于做插入操作 若是修改操作,則相當(dāng)于用修改前值代替修改后值,事務(wù)故障的恢復(fù)步驟,3. 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。 4. 如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了。,10.5 恢復(fù)策略,10.5.1 事務(wù)故障的恢復(fù) 10.5.2 系統(tǒng)故障的恢復(fù) 10.5.3 介質(zhì)

16、故障的恢復(fù),10.5.2 系統(tǒng)故障的恢復(fù),系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因 未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫 已提交事務(wù)對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫 恢復(fù)方法 1. Undo 故障發(fā)生時(shí)未完成的事務(wù) 2. Redo 已完成的事務(wù) 系統(tǒng)故障的恢復(fù)由系統(tǒng)在重新啟動時(shí)自動完成,不需要用戶干預(yù),系統(tǒng)故障的恢復(fù)步驟,1.正向掃描日志文件(即從頭掃描日志文件) 重做(REDO) 隊(duì)列: 在故障發(fā)生前已經(jīng)提交的事務(wù) 這些事務(wù)既有BEGIN TRANSACTION記錄,也有COMMIT記錄 撤銷 (Undo)隊(duì)列:故障發(fā)生時(shí)尚未完成的事務(wù) 這些事務(wù)只有BEGIN TRANSACTION記

17、錄,無相應(yīng)的COMMIT記錄,系統(tǒng)故障的恢復(fù)步驟,2. 對撤銷(Undo)隊(duì)列事務(wù)進(jìn)行撤銷(UNDO)處理 反向掃描日志文件,對每個(gè)UNDO事務(wù)的更新操作執(zhí)行逆操作 即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫 3. 對重做(Redo)隊(duì)列事務(wù)進(jìn)行重做(REDO)處理 正向掃描日志文件,對每個(gè)REDO事務(wù)重新執(zhí)行登記的操作 即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫,10.5 恢復(fù)策略,10.5.1 事務(wù)故障的恢復(fù) 10.5.2 系統(tǒng)故障的恢復(fù) 10.5.3 介質(zhì)故障的恢復(fù),10.5.3 介質(zhì)故障的恢復(fù),1.重裝數(shù)據(jù)庫 2.重做已完成的事務(wù),介質(zhì)故障的恢復(fù)(續(xù)),恢復(fù)步驟 1. 裝入最新的后備數(shù)據(jù)庫副本

18、(離故障發(fā)生時(shí)刻最近的轉(zhuǎn)儲副本) ,使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時(shí)的一致性狀態(tài)。 對于靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,裝入后數(shù)據(jù)庫即處于一致性狀態(tài) 對于動態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,還須同時(shí)裝入轉(zhuǎn)儲時(shí)刻的日志文件副本,利用與恢復(fù)系統(tǒng)故障的方法(即REDO+UNDO),才能將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。,介質(zhì)故障的恢復(fù)(續(xù)),2. 裝入有關(guān)的日志文件副本(轉(zhuǎn)儲結(jié)束時(shí)刻的日志文件副本) ,重做已完成的事務(wù)。 首先掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)識,將其記入重做隊(duì)列。 然后正向掃描日志文件,對重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。,介質(zhì)故障的恢復(fù)(續(xù)),介質(zhì)故障的恢復(fù)需要DB

19、A介入 DBA的工作 重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本 執(zhí)行系統(tǒng)提供的恢復(fù)命令 具體的恢復(fù)操作仍由DBMS完成,第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.6 具有檢查點(diǎn)的恢復(fù)技術(shù),一、問題的提出 二、檢查點(diǎn)技術(shù) 三、利用檢查點(diǎn)的恢復(fù)策略,一、問題的提出,兩個(gè)問題 搜索整個(gè)日志將耗費(fèi)大量的時(shí)間 REDO處理:重新執(zhí)行,浪費(fèi)了大量時(shí)間,解決方案,具有檢查點(diǎn)(checkpoint)的恢復(fù)技術(shù) 在日志文件中增加檢

20、查點(diǎn)記錄(checkpoint) 增加重新開始文件 恢復(fù)子系統(tǒng)在登錄日志文件期間動態(tài)地維護(hù)日志,二、檢查點(diǎn)技術(shù),檢查點(diǎn)記錄的內(nèi)容 1. 建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單 2. 這些事務(wù)最近一個(gè)日志記錄的地址 重新開始文件的內(nèi)容 記錄各個(gè)檢查點(diǎn)記錄在日志文件中的地址,檢查點(diǎn)技術(shù)(續(xù)),具有檢查點(diǎn)的日志文件和重新開始文件,T:事務(wù)清單,D:事務(wù)最近一個(gè)日志記錄的地址,動態(tài)維護(hù)日志文件的方法,動態(tài)維護(hù)日志文件的方法 周期性地執(zhí)行如下操作:建立檢查點(diǎn),保存數(shù)據(jù)庫狀態(tài)。 具體步驟是: 1.將當(dāng)前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上 2.在日志文件中寫入一個(gè)檢查點(diǎn)記錄 3.將當(dāng)前數(shù)據(jù)緩沖區(qū)的

21、所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中 4.把檢查點(diǎn)記錄在日志文件中的地址寫入一個(gè)重新開始文件,建立檢查點(diǎn),恢復(fù)子系統(tǒng)可以定期或不定期地建立檢查點(diǎn),保存數(shù)據(jù)庫狀態(tài) 定期 按照預(yù)定的一個(gè)時(shí)間間隔,如每隔一小時(shí)建立一個(gè)檢查點(diǎn) 不定期 按照某種規(guī)則,如日志文件已寫滿一半建立一個(gè)檢查點(diǎn),三、利用檢查點(diǎn)的恢復(fù)策略,使用檢查點(diǎn)方法可以改善恢復(fù)效率 當(dāng)事務(wù)T在一個(gè)檢查點(diǎn)之前提交 T對數(shù)據(jù)庫所做的修改已寫入數(shù)據(jù)庫 寫入時(shí)間是在這個(gè)檢查點(diǎn)建立之前或在這個(gè)檢查點(diǎn)建立之時(shí) 在進(jìn)行恢復(fù)處理時(shí),沒有必要對事務(wù)T執(zhí)行REDO操作,利用檢查點(diǎn)的恢復(fù)策略(續(xù)),系統(tǒng)出現(xiàn)故障時(shí),恢復(fù)子系統(tǒng)將根據(jù)事務(wù)的不同狀態(tài)采取不同的恢復(fù)策略,利用檢

22、查點(diǎn)的恢復(fù)策略(續(xù)),T1:在檢查點(diǎn)之前提交 T2:在檢查點(diǎn)之前開始執(zhí)行,在檢查點(diǎn)之后故障點(diǎn)之前提交 T3:在檢查點(diǎn)之前開始執(zhí)行,在故障點(diǎn)時(shí)還未完成 T4:在檢查點(diǎn)之后開始執(zhí)行,在故障點(diǎn)之前提交 T5:在檢查點(diǎn)之后開始執(zhí)行,在故障點(diǎn)時(shí)還未完成 恢復(fù)策略: T3和T5在故障發(fā)生時(shí)還未完成,所以予以撤銷 T2和T4在檢查點(diǎn)之后才提交,它們對數(shù)據(jù)庫所做的修改在故障發(fā)生時(shí)可能還在緩沖區(qū)中,尚未寫入數(shù)據(jù)庫,所以要REDO T1在檢查點(diǎn)之前已提交,所以不必執(zhí)行REDO操作,利用檢查點(diǎn)的恢復(fù)步驟,1.從重新開始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的地址,由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄,利用檢

23、查點(diǎn)的恢復(fù)策略(續(xù)),2.由該檢查點(diǎn)記錄得到檢查點(diǎn)建立時(shí)刻所有正在執(zhí)行的事務(wù)清單ACTIVE-LIST 建立兩個(gè)事務(wù)隊(duì)列 UNDO-LIST REDO-LIST 把ACTIVE-LIST暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列,REDO隊(duì)列暫為空。,利用檢查點(diǎn)的恢復(fù)策略(續(xù)),3.從檢查點(diǎn)開始正向掃描日志文件,直到日志文件結(jié)束 如有新開始的事務(wù)Ti,把Ti暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列 如有提交的事務(wù)Tj,把Tj從UNDO-LIST隊(duì)列移到REDO-LIST隊(duì)列 4.對UNDO-LIST中的每個(gè)事務(wù)執(zhí)行UNDO操作 對REDO-LIST中的每個(gè)事務(wù)執(zhí)行REDO操作,第十章 數(shù)據(jù)庫恢復(fù)技術(shù),10.1 事務(wù)的基本概念 10.2 數(shù)據(jù)庫恢復(fù)概述 10.3 故障的種類 10.4 恢復(fù)的實(shí)現(xiàn)技術(shù) 10.5 恢復(fù)策略 10.6 具有檢查點(diǎn)的恢復(fù)技術(shù) 10.7 數(shù)據(jù)庫鏡像 10.8 小結(jié),10.7 數(shù)據(jù)庫鏡像,介質(zhì)故障是對系統(tǒng)影響最為嚴(yán)重的一種故障,嚴(yán)重影響數(shù)據(jù)庫的可用性 介質(zhì)故障恢復(fù)比較費(fèi)時(shí) 為預(yù)防介質(zhì)故障,DBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫 提高數(shù)據(jù)庫可用性的解決方案 數(shù)據(jù)庫鏡像(Mirror),數(shù)據(jù)庫鏡像(續(xù)),數(shù)據(jù)庫鏡像 DBMS自動把整個(gè)數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論