【正文】
成 An Introduction to Database System 第七章 數(shù)據(jù)庫恢復(fù)技術(shù) 事務(wù)的基本概念 數(shù)據(jù)庫恢復(fù)概述 故障的種類 恢復(fù)的實現(xiàn)技術(shù) 恢復(fù)策略 具有檢查點的恢復(fù)技術(shù) 數(shù)據(jù)庫鏡像 小結(jié) An Introduction to Database System 具有檢查點的恢復(fù)技術(shù) 一、問題的提出 二、檢查點技術(shù) 三、利用檢查點的恢復(fù)策略 An Introduction to Database System 一、問題的提出 ?兩個問題 ? 搜索整個日志將耗費大量的時間 ? REDO處理:重新執(zhí)行,浪費了大量時間 An Introduction to Database System 解決方案 ?具有檢查點( checkpoint)的恢復(fù)技術(shù) ? 在日志文件中增加檢查點記錄 ( checkpoint) ? 增加重新開始文件 ? 恢復(fù)子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志 An Introduction to Database System An Introduction to Database System 二、檢查點技術(shù) ?檢查點記錄的內(nèi)容 ? 1. 建立檢查點時刻所有正在執(zhí)行的事務(wù)清單 ? 2. 這些事務(wù)最近一個日志記錄的地址 ?重新開始文件的內(nèi)容 ? 記錄各個檢查點記錄在日志文件中的地址 An Introduction to Database System An Introduction to Database System 在檢查點 維護日志文件 1. 將當(dāng)前 日志 緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上。 2. 在日志文件中寫入一個檢查點記錄。 3. 將當(dāng)前 數(shù)據(jù) 緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中。 4. 把檢查點記錄在日志文件中的地址寫入一個重新開始文件。 An Introduction to Database System 建立檢查點 ?定期 ? 按照預(yù)定的一個時間間隔 ?不定期 ? 按照某種規(guī)則,如日志文件已寫滿一半建立一個檢查點 An Introduction to Database System 三、利用檢查點的恢復(fù)策略 ?當(dāng)事務(wù) T在一個檢查點之前提交 T對數(shù)據(jù)庫所做的修改已寫入數(shù)據(jù)庫 ?在進行恢復(fù)處理時,沒有必要對事務(wù) T執(zhí)行 REDO操作 An Introduction to Database System 利用檢查點的恢復(fù)策略(續(xù)) Tc (檢查點 ) Tf(系統(tǒng)故障 ) REDO UNDO UNDO REDO T2 T3 T4 T5 不要 REDO T1 An Introduction to Database System 利用檢查點的 恢復(fù)步驟 1. 從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址 2 由該地址在日志文件中找到最后一個檢查點記錄 An Introduction to Database System 利用檢查點的恢復(fù)策略(續(xù)) 務(wù)清單 ACTIVELIST ? 建立兩個事務(wù)隊列 ? UNDOLIST ? REDOLIST ? 把 ACTIVELIST暫時放入 UNDOLIST隊列, REDO隊列暫為空。 An Introduction to Database System 利用檢查點的恢復(fù)策略(續(xù)) ,直到日志文件結(jié)束 ? 如有新開始的事務(wù) Ti,把 Ti暫時放入 UNDOLIST隊列 ? 如有提交的事務(wù) Tj,把 Tj從 UNDOLIST隊列移到REDOLIST隊列 UNDOLIST中的每個事務(wù)執(zhí)行 UNDO操作 , 對REDOLIST中的每個事務(wù)執(zhí)行 REDO操作 An Introduction to Database System 第七章 數(shù)據(jù)庫恢復(fù)技術(shù) 事務(wù)的基本概念 數(shù)據(jù)庫恢復(fù)概述 故障的種類 恢復(fù)的實現(xiàn)技術(shù) 恢復(fù)策略 具有檢查點的恢復(fù)技術(shù) 數(shù)據(jù)庫鏡像 小結(jié) An Introduction to Database System 數(shù)據(jù)庫鏡像 ?介質(zhì)故障是對系統(tǒng)影響最為嚴(yán)重的一種故障,嚴(yán)重影響數(shù)據(jù)庫的可用性 ? 介質(zhì)故障恢復(fù)比較費時 ? 為預(yù)防介質(zhì)故障, DBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫 ?提高數(shù)據(jù)庫可用性的解決方案 ? 數(shù)據(jù)庫鏡像( Mirror) An Introduction to Database System 數(shù)據(jù)庫鏡像(續(xù)) ?數(shù)據(jù)庫鏡像 ? DBMS自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個磁盤上 ? DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性 (圖 ) An Introduction to Database System 數(shù)據(jù)庫鏡像的用途 ?出現(xiàn)介質(zhì)故障時 ? DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫副本 (圖 ) ?沒有出現(xiàn)故障時 ? 可用于并發(fā)操作 (圖 ) ? 一個用戶對數(shù)據(jù)加排他鎖修改數(shù)據(jù) ? 其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù) An Introduction to Database System 數(shù)據(jù)庫鏡像(續(xù)) An Introduction to Database System 第七章 數(shù)據(jù)庫恢復(fù)技術(shù) 事務(wù)的基本概念 數(shù)據(jù)庫恢復(fù)概述 故障的種類 恢復(fù)的實現(xiàn)技術(shù) 恢復(fù)策略 具有檢查點的恢復(fù)技術(shù) 數(shù)據(jù)庫鏡像 小結(jié) An Introduction to Database System 小結(jié) ?如果數(shù)據(jù)庫只包含成功事務(wù)提交的結(jié)果,就說數(shù)據(jù)庫處于一致性狀態(tài)。保證數(shù)據(jù)一致性是對數(shù)據(jù)庫的最基本的要求。 ?事務(wù)是數(shù)據(jù)庫的邏輯工作單位 ? DBMS保證系統(tǒng)中一切事務(wù)的原子性、一致性、隔離性和持續(xù)性 An Introduction to Database System 小結(jié)(續(xù)) ? DBMS必須對事務(wù)故障、系統(tǒng)故障和介質(zhì)故障進行恢復(fù) ?恢復(fù)中最經(jīng)常使用的技術(shù):數(shù)據(jù)庫轉(zhuǎn)儲和登記日志文件 ?恢復(fù)的基本原理:利用存儲在后備副本、日志文件和數(shù)據(jù)庫鏡像中的冗余數(shù)據(jù)來重建數(shù)據(jù)庫 An Introduction to Database System 小結(jié)(續(xù)) ?常用恢復(fù)技術(shù) ? 事務(wù)故障的恢復(fù) ? UNDO ? 系統(tǒng)故障的恢復(fù) ? UNDO + REDO ? 介質(zhì)故障的恢復(fù) ? 重裝備份并恢復(fù)到一致性狀態(tài) + REDO An Introduction to Database System 小結(jié)(續(xù)) ?提高恢復(fù)效率的技術(shù) ? 檢查點技術(shù) ? 可以提高系統(tǒng)故障的恢復(fù)效率 ? 可以在一定程度上提高利用動態(tài)轉(zhuǎn)儲備份進行介質(zhì)故障恢復(fù)的效率 ? 鏡像技術(shù) ? 鏡像 技術(shù)可以改善介質(zhì)故障的恢復(fù)效率