【正文】
m 故障的種類 ?事務故障 ?系統(tǒng)故障 ?介質(zhì)故障 An Introduction to Database System 一、事務故障 ?什么是事務故障 ? 某個事務在運行過程中由于種種原因未運行至正常終止點就夭折了 ?事務故障的常見原因 ? 輸入數(shù)據(jù)有誤 ? 運算溢出 ? 違反了某些完整性限制 ? 某些應用程序出錯 ? 并行事務發(fā)生死鎖 ? 。 An Introduction to Database System 事務故障的恢復 ?發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部分修改寫回磁盤 ?事務故障的恢復: 撤消事務( UNDO) ?強行回滾( ROLLBACK)該事務 ?清除該事務對數(shù)據(jù)庫的所有修改,使得這個事務象根本沒有啟動過一樣 An Introduction to Database System 二、系統(tǒng)故障 ?什么是系統(tǒng)故障 ? 整個系統(tǒng)的正常運行突然被破壞 ? 所有正在運行的事務都非正常終止 ? 內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失 An Introduction to Database System 系統(tǒng)故障的常見原因 ?操作系統(tǒng)或 DBMS代碼錯誤 ?操作員操作失誤 ?特定類型的硬件錯誤(如 CPU故障) ?突然停電 An Introduction to Database System 系統(tǒng)故障的恢復 ? 清除尚未完成的事務對數(shù)據(jù)庫的所有修改 ? 系統(tǒng) 重新啟動時 ,恢復程序要強行撤消( UNDO)所有未完成事務 ?將緩沖區(qū)中已完成事務提交的結果寫入數(shù)據(jù)庫 ? 系統(tǒng) 重新啟動時 ,恢復程序需要重做( REDO)所有已提交的事務 An Introduction to Database System 三、介質(zhì)故障 ?硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失 ?介質(zhì)故障比前兩類故障的可能性小得多,但破壞性大得多 An Introduction to Database System 介質(zhì)故障的常見原因 ?硬件故障 ? 磁盤損壞 ? 磁頭碰撞 ? 操作系統(tǒng)的某種潛在錯誤 ? 瞬時強磁場干擾 An Introduction to Database System 介質(zhì)故障的恢復 ?裝入 數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個時刻的數(shù)據(jù) 副本 ?重做自此時始的所有 成功事務 ,將這些事務已提交的結果重新記入數(shù)據(jù)庫 An Introduction to Database System 恢復操作的基本原理 ?恢復操作的基本原理: 冗余 ? 利用 存儲在系統(tǒng)其它地方的 冗余數(shù)據(jù) 來 重建 數(shù)據(jù)庫中已被破壞或不正確的那部分數(shù)據(jù) ?恢復的實現(xiàn)技術:復雜 ? 一個大型數(shù)據(jù)庫產(chǎn)品,恢復子系統(tǒng)的代碼要占全部代碼的 10%以上 An Introduction to Database System 第七章 數(shù)據(jù)庫恢復技術 事務的基本概念 數(shù)據(jù)庫恢復概述 故障的種類 恢復的實現(xiàn)技術 恢復策略 具有檢查點的恢復技術 數(shù)據(jù)庫鏡像 小結 An Introduction to Database System 恢復的實現(xiàn)技術 恢復機制涉及的關鍵問題 1. 如何建立冗余數(shù)據(jù) ? 數(shù)據(jù)轉儲( backup) ? 登錄日志文件( logging) 2. 如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復 An Introduction to Database System 數(shù)據(jù)轉儲 一、什么是轉儲 二、轉儲的用途 三、轉儲方法 An Introduction to Database System 一、什么是轉儲 ?轉儲是指 DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。 ?這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。 An Introduction to Database System 轉儲 故障發(fā)生點 轉儲 運行事務 ↓ 正常運行 ─┼───────┼───────────── Ta Tb Tf 重裝后備副本 重新運行事務 恢復 ─┼───────┴ ----------- - → An Introduction to Database System 三、轉儲方法 1.靜態(tài)轉儲與動態(tài)轉儲 2.完全轉儲與增量轉儲 3.轉儲方法小結 An Introduction to Database System 1.靜態(tài)轉儲 ?在系統(tǒng)中無運行事務時進行轉儲 ?轉儲開始時數(shù)據(jù)庫處于一致性狀態(tài) ?轉儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動 ?優(yōu)點: 實現(xiàn)簡單 ?缺點: 降低了數(shù)據(jù)庫的可用性 ? 轉儲必須等用戶事務結束 ? 新的事務必須等轉儲結束 An Introduction to Database System 利用靜態(tài)轉儲副本進行恢復 故障發(fā)生點 靜態(tài) 轉儲 運行事務 ↓ 正常運行 ─┼───────┼───────────── Ta Tb Tf 重裝后備副本 恢復 ─┼─────── ┥ An Introduction to Database System 動態(tài)轉儲 ?轉儲操作與用戶事務并發(fā)進行 ?轉儲期間允許對數(shù)據(jù)庫進行存取或修改 ?優(yōu)點 ? 不用等待正在運行的用戶事務結束 ? 不會影響新事務的運行 ?動態(tài)轉儲的缺點 ? 不能保證副本中的數(shù)據(jù)正確有效 An Introduction to Database System 動態(tài)轉儲 ?利用動態(tài)轉儲得到的副本進行故障恢復 ? 需要把動態(tài)轉儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件 ? 后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài) An Introduction to Database System 利用動態(tài)轉儲副本進行恢復 運行事務 故障發(fā)生點 動態(tài) 轉儲 運行事務 ↓ 正常運行 ─┼──────