【正文】
OLIST隊列,REDO隊列暫為空。 An Introduction to Database System 利用檢查點的恢復策略(續(xù)) ,直到日志文件結束 ? 如有新開始的事務 Ti,把 Ti暫時放入 UNDOLIST隊列 ? 如有提交的事務 Tj,把 Tj從 UNDOLIST隊列移到 REDOLIST隊列 UNDOLIST中的每個事務執(zhí)行 UNDO操作 , 對REDOLIST中的每個事務執(zhí)行 REDO操作 An Introduction to Database System 第七章 數(shù)據(jù)庫恢復技術 事務的基本概念 數(shù)據(jù)庫恢復概述 故障的種類 恢復的實現(xiàn)技術 恢復策略 具有檢查點的恢復技術 數(shù)據(jù)庫鏡像 Oracle的恢復技術 小結 An Introduction to Database System 數(shù)據(jù)庫鏡像 ? 介質故障是對系統(tǒng)影響最為嚴重的一種故障,嚴重影響數(shù)據(jù)庫的可用性 ? 介質故障恢復比較費時 ? 為預防介質故障, DBA必須周期性地轉儲數(shù)據(jù)庫 ? 提高數(shù)據(jù)庫可用性的解決方案 ? 數(shù)據(jù)庫鏡像( Mirror) An Introduction to Database System 數(shù)據(jù)庫鏡像(續(xù)) ? 數(shù)據(jù)庫鏡像 ? DBMS自動把整個數(shù)據(jù)庫或其中的關鍵數(shù)據(jù)復制到另一個磁盤上 ? DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性(圖 ) An Introduction to Database System 數(shù)據(jù)庫鏡像的用途 ? 出現(xiàn)介質故障時 ? DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復,不需要關閉系統(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ù)庫恢復技術 事務的基本概念 數(shù)據(jù)庫恢復概述 故障的種類 恢復的實現(xiàn)技術 恢復策略 具有檢查點的恢復技術 數(shù)據(jù)庫鏡像 Oracle的恢復技術 小結 An Introduction to Database System Oracle的恢復技術 1. 轉儲 2. 登記日志文件 An Introduction to Database System Oracle的恢復技術:轉儲 ? 轉儲后備副本的方法 ? 文件拷貝 ? EXPORT實用程序 ? 用 SQL命令 SPOOL ? 自己編程實現(xiàn) An Introduction to Database System 重裝后備副本的方法 ? 文件拷貝 ? IMPORT實用程序 ? SQL*LOADER實用程序 ? 自己編程實現(xiàn) An Introduction to Database System 2. 登記日志文件 ? ORACLE :以數(shù)據(jù)塊為單位 ? ORACLE : REDO日志 + 回滾段 An Introduction to Database System ORACLE ? 日志文件以數(shù)據(jù)塊為單位,恢復操作不是基于操作,而是基于數(shù)據(jù)塊 ? 將更新前的舊值與更新后的新值分別放在兩個不同的日志文件中 ? 記錄數(shù)據(jù)庫更新前舊值的日志文件稱為數(shù)據(jù)庫前像文件( Before Image,簡稱BI文件) ? 記錄數(shù)據(jù)庫更新后新值的日志文件稱為數(shù)據(jù)庫的后像文件( After Image,簡稱AI文件) An Introduction to Database System 的恢復技術(續(xù)) ? BI文件是必須的, AI文件是任選的 ? 沒有 AI文件:只能執(zhí)行 UNDO處理,不能執(zhí)行 REDO處理 An Introduction to Database System Oracle (續(xù)) ? REDO日志文件:更新數(shù)據(jù)的前像和后像 ? 回滾段 (Rollback Segment):記錄尚未完成的更新事務的更新數(shù)據(jù)的前像 ? 事務故障恢復 ? 根據(jù)回滾段中的數(shù)據(jù),撤消該事務的操作 An Introduction to Database System Oracle 的恢復技術(續(xù)) ? 系統(tǒng)故障恢復 ? 首先掃描 REDO日志文件,重做所有操作,并對更新操作建立回滾段數(shù)據(jù)。當遇到提交記錄,取消相應回滾段中數(shù)據(jù)。 ? 再根據(jù)回滾段中的數(shù)據(jù),撤消未正常提交的事務的操作(圖 ) 優(yōu)點:只需要掃描日志文件一遍 An Introduction to Database System Oracle的恢復技術(續(xù)) 圖 Oracle的恢復過程 (a) 發(fā)生故障,事務非正常終止 Ta Tf T1 T3 T2 T44 時間 An Introduction to Database System Oracle的恢復技術(續(xù)) (b) 利用 REDO文件,重做所有操作 時間 T1 T3 T2 T44 An Introduction to Database System Oracle的恢復技術(續(xù)) (c) 利用回滾段撤消未提交的事務數(shù)據(jù)庫恢復到一致性狀態(tài) 時間 T1 T2 An Introduction to Database System Oracle的恢復技術(續(xù)) ? ORACLE (續(xù) ) ? 介質故障恢復 ? 重裝數(shù)據(jù)庫后備副本文件,恢復到轉儲時的數(shù)據(jù)庫一致性狀態(tài) ? 利用在此之后轉儲的 REDO日志文件副本將數(shù)據(jù)庫恢復到最近點 (類似于系統(tǒng)故障恢復 ) An Introduction to Database System 第七章 數(shù)據(jù)庫恢復技術 事務的基本概念 數(shù)據(jù)庫恢復概述 故障的種類 恢復的實現(xiàn)技術 恢復策略 具有檢查點的恢復技術 數(shù)據(jù)庫鏡像 Oracle的恢復技術 小結 An Introduction to Database System 小結 ? 如果數(shù)據(jù)庫只包含成功事務提交的結果,就說數(shù)據(jù)庫處于一致性狀態(tài)。保證數(shù)據(jù)一致性是對數(shù)據(jù)庫的最基本的要求。 ? 事務是數(shù)據(jù)庫的邏輯工作單位 ? DBMS保證系統(tǒng)中一切事務的原子性、一致性、隔離性和持續(xù)性 An Introduction to Database System 小結(續(xù)) ? DBMS必須對事務故障、系統(tǒng)故障和介質故障進行恢復 ? 恢復中最經(jīng)常使用的技術:數(shù)據(jù)庫轉儲和登記日志文件 ? 恢復的基本原理:利用存儲在后備副本、日志文件和數(shù)據(jù)庫鏡像中的冗余數(shù)據(jù)來重建數(shù)據(jù)庫 An Introduction to Database System 小結(續(xù)) ? 常用恢復技術 ? 事務故障的恢復 ? UNDO ? 系統(tǒng)故障的恢復 ? UNDO + REDO ? 介質故障的恢復 ? 重裝備份并恢復到一致性狀態(tài) + REDO An Introduction to Database System 小結(續(xù)) ? 提高恢復效率的技術 ? 檢查點技術 ? 可以提高系統(tǒng)故障的恢復效率 ? 可以在一定程度上提高利用動態(tài)轉儲備份進行介質故障恢復的效率 ? 鏡像技術 ? 鏡像 技術可以改善介質故障的恢復效率 An Introduction to Database System An Introduction to Database System An Introduction to Database System 下課了。 休息一會兒。