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

下載本文檔

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

文檔簡介

1/38,計算機學院 陳豐 ,數(shù)據(jù)庫系統(tǒng)概論,2/38,第10章 數(shù)據(jù)庫恢復技術(shù),本書第10章、第11章討論事務處理技術(shù)。 l 事務-是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應用程序的基本邏輯單元。 l 事務處理技術(shù)-主要包括: n 數(shù)據(jù)庫恢復技術(shù) n 數(shù)據(jù)庫并發(fā)控制技術(shù) 數(shù)據(jù)庫恢復機制和并發(fā)控制機制是數(shù)據(jù)庫管理系統(tǒng)的重要組成部分。本章討論數(shù)據(jù)庫恢復的概念和常用技術(shù)。,3/38,第10章 數(shù)據(jù)庫恢復技術(shù),10.1 事務的基本概念 10.2 數(shù)據(jù)庫恢復概述 10.3 故障的種類 10.4 恢復的實現(xiàn)技術(shù) 10.5 恢復策略 小結(jié),4/38,問題:系統(tǒng)軟、硬件故障對系統(tǒng)數(shù)據(jù)造成破壞時,該如何處理? 例:銀行轉(zhuǎn)帳 設從帳號A中撥一筆款X(如1000元)到帳號B,正常的執(zhí)行過程是: 查看帳號A上是否有足夠的款數(shù),即余額 X ? 若余額 X, 則給出提示信息,中止執(zhí)行。 若余額 X,則執(zhí)行下面三步: 在A中記上一筆支出,從余額中減去 X; 把值X傳到B上; 在B中記上一筆收入,在余額上加X,結(jié)束。,若在執(zhí)行了第二步后突然斷電或線路傳輸錯誤,則導致帳面不平,5/38,10.1 事務的基本概念,一、什么是事務 二、如何定義事務 三、事務的特性,6/38,一、什么是事務,事務(Transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。 事務是恢復和并發(fā)控制的基本單位,7/38,二、如何定義事務,1. 顯式定義方法:,BEGIN TRANSACTION BEGIN TRANSACTION SQL 語句1 SQL 語句1 SQL 語句2 SQL 語句2 COMMIT ROLLBACK,說明:,COMMIT提交 事務正常結(jié)束 提交事務的所有操作(更新) 事務中所有對數(shù)據(jù)庫的更新永久生效,ROLLBACK回滾 事務異常終止 事務運行的過程中發(fā)生了故障,不能繼續(xù)執(zhí)行 撤消事務中對數(shù)據(jù)庫的所有更新操作 事務滾回到開始時的狀態(tài),2. 隱式定義方法 當用戶沒有顯式地定義事務時,DBMS按缺省規(guī)定自動劃分事務,8/38,三、事務的特性(ACID特性),事務的ACID特性: 原子性(Atomicity) 一致性(Consistency) 隔離性(Isolation) 持續(xù)性(Durability ),9/38,1.原子性(Atomicity):事務是DB的邏輯工作單位,事務 中包括的諸操作要么都做,要么都不做。,2.一致性(Consistency):事務對數(shù)據(jù)庫的作用應使數(shù)據(jù)庫 從一個一致性狀態(tài)到另一個一致性狀態(tài),三、事務的特性(ACID特性),一致性狀態(tài):當數(shù)據(jù)庫只包含成功事務提交的結(jié)果時,就說數(shù)據(jù)庫處于“一致性狀態(tài)”。,不一致狀態(tài):如果數(shù)據(jù)庫系統(tǒng)運行中發(fā)生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數(shù)據(jù)庫所做的修改有一部分已寫入物理數(shù)據(jù)庫,這時數(shù)據(jù)庫就處于一種“不正確的狀態(tài)”,或者說是“不一致的狀態(tài)”。,10/38,例 銀行轉(zhuǎn)帳:從帳號A中取出一千元,存入帳號B。,定義一個事務,該事務包括兩個操作,這兩個操作要么全做,要么全不做: 全做或者全不做,數(shù)據(jù)庫都處于一致性狀態(tài)。 如果只做一個操作則用戶邏輯上就會發(fā)生錯誤,出 現(xiàn)一千元的錯賬,這時數(shù)據(jù)庫就處于不一致性狀態(tài)。 可見一致性與原子性是密切相關(guān)的。,三、事務的特性(ACID特性),11/38,3.隔離性(Isolation):一個事務的執(zhí)行不能被其他事務干擾。即一個事務內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能相互干擾。,三、事務的特性(ACID特性),4.持久性(Durability):一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。后續(xù)其他操作或故障不應該對其執(zhí)行結(jié)果有任何影響,12/38,保證事務ACID特性是事務處理的重要任務。事務ACID特性可能遭到破壞的因素有: (1)多個事務并發(fā)運行時,不同事務的操作交叉執(zhí)行; (2)事務在運行過程中被強行停止。 其中: 在第一種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證多個事務的交叉運行不影響這些事務的原子性。 在第二種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證被強行終止的事務對數(shù)據(jù)庫和其他事務沒有任何影響。,并發(fā)控制機制,恢復機制,三、事務的特性(ACID特性),13/38,10.2 數(shù)據(jù)庫恢復概述,數(shù)據(jù)庫系統(tǒng)中故障發(fā)生的客觀性、危害性及恢復的必要性: l故障發(fā)生的客觀性 盡管數(shù)據(jù)庫系統(tǒng)中采取了各種保護措施來防止數(shù)據(jù)庫的安全性和完整性被破壞,保證并發(fā)事務的正確執(zhí)行,但是計算機系統(tǒng)中硬件的故障、軟件的錯誤、操作員的失誤以及惡意的破壞仍是不可避免的。 l故障發(fā)生的危害性 這些故障輕則造成運行事務非正常中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分數(shù)據(jù)丟失。 l故障恢復的必要性 數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)(亦稱為一致狀態(tài)或完整狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復。,14/38,恢復子系統(tǒng)在DBMS中的地位與作用: l 是數(shù)據(jù)庫管理系統(tǒng)的一個重要組成部分,而且還相當龐大,常常占整個系統(tǒng)代碼的百分之十以上。 l 數(shù)據(jù)庫系統(tǒng)所采用的恢復技術(shù)是否行之有效,不僅對系統(tǒng)的可靠程度起著決定性作用, l 而且對系統(tǒng)的運行效率也有很大影響, l 是衡量系統(tǒng)性能優(yōu)劣的重要指標。,15/38,10.3 故障的種類,一、事務內(nèi)部的故障 二、系統(tǒng)故障 三、介質(zhì)故障 四、計算機病毒,16/38,一、事務內(nèi)部的故障,可預期的故障 例如:銀行轉(zhuǎn)賬事務,這個事務把一筆金額從一個賬產(chǎn)甲轉(zhuǎn)給另一個賬戶乙。 BEGIN TRANSACTION 讀賬戶甲的余額BALANCE; BALANCE=BALANCE-AMOUNT;(AMOUNT為轉(zhuǎn)賬金額) IF (BALANCE0) THEN 打印 金額不足,不能轉(zhuǎn)賬; ROLLBACK; (撤銷該事務) ELSE 寫回BALANCE; 讀賬戶乙的余額BALANCE1; BALANCE1=BALANCE1+AMOUNT; 寫回BALANCE1; COMMIT; 有的是非預期的故障,不能由事務程序處理的。,事務內(nèi)部更多的故障是非預期的,是不能由應用程序處理的。如: 運算溢出 并發(fā)事務發(fā)生死鎖而被選中撤銷該事務 違反了某些完整性限制等 以后,事務故障僅指這類非預期的故障。 事務故障,意味著事務沒有達到預期的終點(COMMIT或者顯式的ROLLBACK),因此,數(shù)據(jù)庫可能處于不正確狀態(tài)。 恢復程序要在不影響其他事務運行的情況下,強行回滾(ROLLBACK)該事務, 撤銷該事務已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務好像根本沒有啟動一樣。 這類恢復操作稱為事務撤銷(UNDO)。,18/38,二、系統(tǒng)故障,系統(tǒng)故障,是指造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動。例如: 特定類型的硬件錯誤(CPU故障) 操作系統(tǒng)故障 DBMS代碼錯誤 突然停電等,19/38,系統(tǒng)故障,導致的后果: 這類故障影響正在運行的所有事務,但不破壞數(shù)據(jù)庫。 l一些尚未完成的事務的結(jié)果可能已送入物理數(shù)據(jù)庫,從而造成數(shù)據(jù)庫可能處于不正確的狀態(tài)。 l有些已完成的事務可能有一部分甚至全部留在緩沖區(qū),尚未寫回到磁盤上的物理數(shù)據(jù)庫中,系統(tǒng)故障使得這些事務對數(shù)據(jù)庫的修改部分或全部丟失,這也會使數(shù)據(jù)庫處于不一致狀態(tài)。,讓所有非正常終止的事務回滾, 強行撤銷(UNDO)所有未完成事務,重做(REDO)所有已提交的事務,以將數(shù)據(jù)庫恢復到一致狀態(tài)。,恢復子系統(tǒng)必須在系統(tǒng)重新啟動時:,20/38,三、介質(zhì)故障,系統(tǒng)故障常稱為軟故障(Soft Crash),介質(zhì)故障稱為硬故障(Hard Crash)。如: l 磁盤損壞、 l 磁頭碰撞, l 瞬時強磁場干擾等。 硬故障,導致的后果: l 破壞數(shù)據(jù)庫或部分數(shù)據(jù)庫, l 影響正在存取這部分數(shù)據(jù)的所有事務。,這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。,21/38,四、計算機病毒,l是一種人為的故障或破壞, l是一些惡作劇者研制的一種計算機程序。 l它像微生物學所稱的病毒一樣,可以繁殖和傳播 l并造成對計算機系統(tǒng)包括數(shù)據(jù)庫的危害。 計算機病毒已成為計算機系統(tǒng)的主要威脅,自然也是數(shù)據(jù)庫系統(tǒng)的主要威脅。,總結(jié) 各類故障,對數(shù)據(jù)庫的影響有兩種可能性:,數(shù)據(jù)庫被破壞。,數(shù)據(jù)庫沒有破壞,數(shù)據(jù)不正確;,22/38,10.4 恢復的實現(xiàn)技術(shù),數(shù)據(jù)庫恢復的基本原理-冗余 數(shù)據(jù)庫任何一部分被破壞或數(shù)據(jù)不正確時,可根據(jù)存儲在系統(tǒng)別處的數(shù)據(jù)來重建。 恢復機制涉及的兩個關(guān)鍵問題是: 如何建立冗余數(shù)據(jù); 如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復。 建立冗余數(shù)據(jù),最常用的技術(shù)是: 10.4.1 數(shù)據(jù)轉(zhuǎn)儲 10.4.2 登記日志文件 通常,在一個數(shù)據(jù)庫系統(tǒng)中,這兩種方法是一起使用的。,23/38,轉(zhuǎn)儲是指DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。,這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。,10.4.1 數(shù)據(jù)轉(zhuǎn)儲,說明:當數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入,但重裝后備副本只能將數(shù)據(jù)庫恢復到轉(zhuǎn)儲時的狀態(tài),要想恢復到故障發(fā)生時的狀態(tài),必須重新運行自轉(zhuǎn)儲以后的所有更新事務。,24/38,1. 靜態(tài)轉(zhuǎn)儲,定義:靜態(tài)轉(zhuǎn)儲是指在系統(tǒng)中無運行事務時進行轉(zhuǎn)儲。靜態(tài) 轉(zhuǎn)儲得到的一定是一個數(shù)據(jù)一致性的副本.,10.4.1 數(shù)據(jù)轉(zhuǎn)儲,優(yōu)點:實現(xiàn)簡單,缺點:降低了數(shù)據(jù)庫的可用性,轉(zhuǎn)儲必須等用戶事務結(jié)束 新的事務必須等轉(zhuǎn)儲結(jié)束,25/38,2. 動態(tài)轉(zhuǎn)儲,定義:動態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間允許數(shù)據(jù)庫進行存取或修改。 即轉(zhuǎn)儲和用戶事務可以并發(fā)執(zhí)行。動態(tài)轉(zhuǎn)儲不一定得 到一個數(shù)據(jù)一致的副本。,優(yōu)點: 不用等待正在運行的用戶事務結(jié)束 不會影響新事務的運行,缺點:不能保證副本中的數(shù)據(jù)正確有效,10.4.1 數(shù)據(jù)轉(zhuǎn)儲,26/38,例如, l 在轉(zhuǎn)儲期間的某個時刻Tc,系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到磁帶上, l 而在下一時刻Td,某一事務將A改為200。 l 轉(zhuǎn)儲結(jié)束后,后備副本上的A已是過時的數(shù)據(jù)了。 為此,可以做以下改進: l 必須把轉(zhuǎn)儲期間各事務對數(shù)據(jù)庫的修改活動登記下來, l 也即建立日志文件(log file)。 l 這樣,后援副本加上日志文件,就能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)。,3. 海量轉(zhuǎn)儲與增量轉(zhuǎn)儲,海量轉(zhuǎn)儲: 每次轉(zhuǎn)儲全部數(shù)據(jù)庫 增量轉(zhuǎn)儲: 只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù),海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較 從恢復角度看,使用海量轉(zhuǎn)儲得到的后備副本進行恢復往往更方便 但如果數(shù)據(jù)庫很大,事務處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效,轉(zhuǎn)儲方法分類,28/38,1.定義 日志(log)文件:用來記錄事務對數(shù)據(jù)庫的更新操作的文件。 動態(tài)轉(zhuǎn)儲方式必須建立日志文件 靜態(tài)轉(zhuǎn)儲方式最好建立日志文件,2.日志文件的格式(記錄/數(shù)據(jù)塊)和內(nèi)容 1) 以記錄為單位的日志文件 系統(tǒng)把 事務開始(BEGIN TRANSANCTION) 事務提交(COMMIT)或 事務撤消(ROLLBACK) 對數(shù)據(jù)庫的插入、刪除、修改等 每一個操作作為一條記錄存放到日志文件中,10.4.2 登記日志文件,29/38,每條日志記錄的主要內(nèi)容,2)以數(shù)據(jù)塊為單位的日志文件 將事務標識及更新前后的數(shù)據(jù)塊均放在日志文件中。,10.4.2 登記日志文件,30/38,3.日志文件的作用 (1)事務故障恢復和系統(tǒng)故障恢復必須用日志文件。 (2)動態(tài)轉(zhuǎn)儲的后備副本進行介質(zhì)故障恢復,必須用日志文件。 (3)靜態(tài)轉(zhuǎn)儲的后備副本進行介質(zhì)故障恢復,也可用日志文件。,10.4.2 登記日志文件,31/38,4.登記日志文件時必須遵循的兩條原則: (1)登記的次序嚴格按并發(fā)事務執(zhí)行的時間次序; (2)必須先寫日志文件,后寫數(shù)據(jù)庫;,10.4.2 登記日志文件,有可能在這兩個操作之間發(fā)生故障,即這兩個寫操作只完成了一個。 如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記這個修改,則以后就無法恢復這個修改了。 如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性。,如:欲將數(shù)據(jù)庫中某記錄字段的值由5改為8,登記日志文件后發(fā)生故障,則字段值仍為5,日志中不會登記該事務的COMMIT或ROLLBACK記錄,事務未完成,恢復時對該操作做撤消處理,將字段值改為該修改操作的舊值5,數(shù)據(jù)庫內(nèi)容不變。,寫日志文件操作:把表示這個修改的日志記錄寫到日志文件 寫數(shù)據(jù)庫操作: 把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中,32/38,4 恢復策略,10.5 恢復策略,發(fā)生故障時,利用數(shù)據(jù)庫后援副本和日志文件可以將數(shù)據(jù)庫恢復到某個一致性狀態(tài),但不同故障的恢復策略和方法是不一樣的。 利用日志文件進行恢復 基本策略: 對于尚未提交的事務,執(zhí)行撤消處理(UNDO) 對于已經(jīng)提交的事務,執(zhí)行重做處理(REDO) 基本方法: 掃描日志文件,確定所有已開始但尚未提交的事務 (對它們需UNDO),再確定所有已提交的事務 (對它們需REDO),33/38,UNDO處理:若事務提交前出現(xiàn)異常,則對已執(zhí)行的操作 進行撤消處理,使數(shù)據(jù)庫恢復到該事務開始前的狀態(tài)。 具體做法是:反向掃描日志文件,對每個需UNDO的事務的更新操作執(zhí)行反操作。即對已插入的記錄執(zhí)行刪除,對已刪除的記錄重新插入,對已修改的記錄用舊值代替新值。,REDO處理:重做已提交事務的操作。 具體做法是:正向掃描日志文件重新執(zhí)行登記的操作,10.5 恢復策略,有些事務雖已發(fā)出COMMIT操作,但更新的結(jié)果可能只是寫到緩沖區(qū)而未能寫入磁盤,或磁盤上數(shù)據(jù)庫被破壞,因此需要REDO處理。,34/38,10.5.1 事務故障的恢復,事務故障是指事務被非正常終止,應根據(jù)日志文件對未完 成事務做UNDO處理,步驟如下: (1)反向掃描日志文件,查找未完成事務的更新操作; (2)對該事務的更新操作執(zhí)行逆操作; (3)繼續(xù)反向掃描日志文件,對遇到的更新操作做同樣 處理; (4)當遇到某事務的開始標記時,停止對該事務的處理。 (5)重復上述過程,直到所有未完成事務全部UNDO完 畢。 事務故障的恢復由系統(tǒng)自動完成,不需要用戶干預,35/38,10.5.2 系統(tǒng)故障的恢復,恢復的方法: 利用日志文件撤銷(undo)尚未完成的事務; 利用日志文件重做(redo)已提交的事務; 步驟如下: (1)正向掃描日志文件,找出在故障發(fā)生前已提交的事務,將 它們記入重做(REDO)隊列,同時找出故障發(fā)生前尚未 完成的事務,將它們

溫馨提示

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

評論

0/150

提交評論