十?dāng)?shù)據(jù)庫(kù)恢復(fù)技術(shù)10.3.1策略_第1頁(yè)
十?dāng)?shù)據(jù)庫(kù)恢復(fù)技術(shù)10.3.1策略_第2頁(yè)
十?dāng)?shù)據(jù)庫(kù)恢復(fù)技術(shù)10.3.1策略_第3頁(yè)
十?dāng)?shù)據(jù)庫(kù)恢復(fù)技術(shù)10.3.1策略_第4頁(yè)
十?dāng)?shù)據(jù)庫(kù)恢復(fù)技術(shù)10.3.1策略_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、An Introduction to Database System中國(guó)人民大學(xué)信息學(xué)院 陳紅 數(shù)據(jù)庫(kù)系統(tǒng)概論An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié)An Introduction to Database System10.5 恢復(fù)策略10.5.1 事務(wù)故障的恢復(fù)10.5.2 系統(tǒng)故障

2、的恢復(fù)10.5.3 介質(zhì)故障的恢復(fù)An Introduction to Database System10.5.1 事務(wù)故障的恢復(fù)事務(wù)故障:事務(wù)在運(yùn)行至正常終止點(diǎn)前被終止恢復(fù)方法由恢復(fù)子系統(tǒng)利用日志文件撤消(UNDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改事務(wù)故障的恢復(fù)由系統(tǒng)自動(dòng)完成,對(duì)用戶是透明的,不需要用戶干預(yù)An Introduction to Database System事務(wù)故障的恢復(fù)步驟1. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。2. 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值” 寫入數(shù)據(jù)庫(kù)。插入操作, “更新前的值”為空,則相當(dāng)于做刪除操作刪除操作

3、,“更新后的值”為空,則相當(dāng)于做插入操作若是修改操作,則相當(dāng)于用修改前值代替修改后值 An Introduction to Database System事務(wù)故障的恢復(fù)步驟3. 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。4. 如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了。An Introduction to Database System10.5 恢復(fù)策略10.5.1 事務(wù)故障的恢復(fù)10.5.2 系統(tǒng)故障的恢復(fù)10.5.3 介質(zhì)故障的恢復(fù)An Introduction to Database System10.5.2 系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致狀

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

5、T記錄An Introduction to Database System系統(tǒng)故障的恢復(fù)步驟2. 對(duì)撤銷(Undo)隊(duì)列事務(wù)進(jìn)行撤銷(UNDO)處理反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的更新操作執(zhí)行逆操作即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù) 3. 對(duì)重做(Redo)隊(duì)列事務(wù)進(jìn)行重做(REDO)處理正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新執(zhí)行登記的操作即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù) An Introduction to Database System10.5 恢復(fù)策略10.5.1 事務(wù)故障的恢復(fù)10.5.2 系統(tǒng)故障的恢復(fù)10.5.3 介質(zhì)故障的恢復(fù)An Introduction to

6、 Database System10.5.3 介質(zhì)故障的恢復(fù)1.重裝數(shù)據(jù)庫(kù)2.重做已完成的事務(wù)An Introduction to Database System介質(zhì)故障的恢復(fù)(續(xù))恢復(fù)步驟1. 裝入最新的后備數(shù)據(jù)庫(kù)副本(離故障發(fā)生時(shí)刻最近的轉(zhuǎn)儲(chǔ)副本) ,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。對(duì)于靜態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,裝入后數(shù)據(jù)庫(kù)即處于一致性狀態(tài)對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)時(shí)刻的日志文件副本,利用與恢復(fù)系統(tǒng)故障的方法(即REDO+UNDO),才能將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。An Introduction to Database System利用靜態(tài)轉(zhuǎn)儲(chǔ)副本將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀

7、態(tài) 故障發(fā)生點(diǎn) 靜態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) 正常運(yùn)行 Ta Tb Tf 登記日志文件 重裝后備副本 恢復(fù) An Introduction to Database System利用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)副本將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài) Ta Tb Tf 動(dòng)態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) 故障發(fā)生點(diǎn)正常運(yùn)行 登記日志文件 登記新日志文件 轉(zhuǎn)儲(chǔ)日志文件 重裝后備副本,然后利用轉(zhuǎn)儲(chǔ)的日志文件恢復(fù)恢復(fù)到一 致性狀態(tài)An Introduction to Database System介質(zhì)故障的恢復(fù)(續(xù))2. 裝入有關(guān)的日志文件副本(轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本) ,重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)識(shí),將其記入重做

8、隊(duì)列。然后正向掃描日志文件,對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù)。An Introduction to Database System介質(zhì)故障的恢復(fù)(續(xù))介質(zhì)故障的恢復(fù)需要DBA介入DBA的工作重裝最近轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本和有關(guān)的各日志文件副本執(zhí)行系統(tǒng)提供的恢復(fù)命令具體的恢復(fù)操作仍由DBMS完成An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié)An

9、Introduction to Database System10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)一、問(wèn)題的提出二、檢查點(diǎn)技術(shù)三、利用檢查點(diǎn)的恢復(fù)策略An Introduction to Database System一、問(wèn)題的提出兩個(gè)問(wèn)題搜索整個(gè)日志將耗費(fèi)大量的時(shí)間REDO處理:重新執(zhí)行,浪費(fèi)了大量時(shí)間An Introduction to Database System解決方案具有檢查點(diǎn)(checkpoint)的恢復(fù)技術(shù)在日志文件中增加檢查點(diǎn)記錄(checkpoint)增加重新開始文件恢復(fù)子系統(tǒng)在登錄日志文件期間動(dòng)態(tài)地維護(hù)日志An Introduction to Database System二、

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

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

12、ction to Database System利用檢查點(diǎn)的恢復(fù)策略(續(xù))Tc (檢查點(diǎn))Tf(系統(tǒng)故障) REDOUNDOUNDO REDOT2T3T4T5不要REDOT1系統(tǒng)出現(xiàn)故障時(shí),恢復(fù)子系統(tǒng)將根據(jù)事務(wù)的不同狀態(tài)采取不同的恢復(fù)策略 An Introduction to Database System利用檢查點(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í)還未完成,所以予以撤銷

13、T2和T4在檢查點(diǎn)之后才提交,它們對(duì)數(shù)據(jù)庫(kù)所做的修改在故障發(fā)生時(shí)可能還在緩沖區(qū)中,尚未寫入數(shù)據(jù)庫(kù),所以要REDOT1在檢查點(diǎn)之前已提交,所以不必執(zhí)行REDO操作An Introduction to Database System利用檢查點(diǎn)的恢復(fù)步驟 1.從重新開始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的地址,由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄An Introduction to Database System利用檢查點(diǎn)的恢復(fù)策略(續(xù))2.由該檢查點(diǎn)記錄得到檢查點(diǎn)建立時(shí)刻所有正在執(zhí)行的事務(wù)清單ACTIVE-LIST建立兩個(gè)事務(wù)隊(duì)列UNDO-LIST REDO-LIST 把ACTIVE-

14、LIST暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列,REDO隊(duì)列暫為空。An Introduction to Database System利用檢查點(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.對(duì)UNDO-LIST中的每個(gè)事務(wù)執(zhí)行UNDO操作 對(duì)REDO-LIST中的每個(gè)事務(wù)執(zhí)行REDO操作An Introduction to Database System思考檢查點(diǎn)過(guò)程1.將當(dāng)前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上2.在日志文件中寫入一

15、個(gè)檢查點(diǎn)記錄3.將當(dāng)前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫(kù)中4.把檢查點(diǎn)記錄在日志文件中的地址寫入一個(gè)重新開始文件如果在第2步之后發(fā)生故障,會(huì)有問(wèn)題嗎?An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié)An Introduction to Database System10.7 數(shù)據(jù)庫(kù)鏡像介質(zhì)故障是對(duì)系統(tǒng)影響最為嚴(yán)重的一種故障,嚴(yán)重影響數(shù)據(jù)庫(kù)的可用性介質(zhì)故障恢復(fù)比較費(fèi)時(shí)為預(yù)防介質(zhì)

16、故障,DBA必須周期性地轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)提高數(shù)據(jù)庫(kù)可用性的解決方案數(shù)據(jù)庫(kù)鏡像(Mirror)An Introduction to Database System數(shù)據(jù)庫(kù)鏡像(續(xù))數(shù)據(jù)庫(kù)鏡像DBMS自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤上DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性 每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS自動(dòng)把更新后的數(shù)據(jù)復(fù)制過(guò)去An Introduction to Database System數(shù)據(jù)庫(kù)鏡像的用途出現(xiàn)介質(zhì)故障時(shí)可由鏡像磁盤繼續(xù)提供使用 同時(shí)DBMS自動(dòng)利用鏡像磁盤數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù)不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫(kù)副本An Introduction to Database Syst

17、em數(shù)據(jù)庫(kù)鏡像(續(xù))沒(méi)有出現(xiàn)故障時(shí)可用于并發(fā)操作一個(gè)用戶對(duì)數(shù)據(jù)加排他鎖修改數(shù)據(jù),其他用戶可以讀鏡像數(shù)據(jù)庫(kù)上的數(shù)據(jù),而不必等待該用戶釋放鎖 An Introduction to Database System數(shù)據(jù)庫(kù)鏡像(續(xù))頻繁地復(fù)制數(shù)據(jù)自然會(huì)降低系統(tǒng)運(yùn)行效率在實(shí)際應(yīng)用中用戶往往只選擇對(duì)關(guān)鍵數(shù)據(jù)和日志文件鏡像不是對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行鏡像An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié)An Introduction to Database System10.8 小結(jié)事務(wù)的概念和性質(zhì)事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位DBMS保證系統(tǒng)中一切事務(wù)的原子性、一致性、隔離性和持續(xù)性An Introduction to Database System小結(jié)(續(xù))故障的種類事務(wù)故障系統(tǒng)故障介質(zhì)故障恢復(fù)中最經(jīng)常使用的技術(shù)數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)登記日志文件An Introduction to Database System小結(jié)(續(xù))恢復(fù)策略事務(wù)故障的恢復(fù)UNDO系統(tǒng)故障的恢復(fù)UNDO + REDO介質(zhì)故障的恢復(fù)重裝備份并恢復(fù)到一致性狀態(tài) +

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論