第10章:數(shù)據(jù)庫恢復技術_第1頁
第10章:數(shù)據(jù)庫恢復技術_第2頁
第10章:數(shù)據(jù)庫恢復技術_第3頁
第10章:數(shù)據(jù)庫恢復技術_第4頁
第10章:數(shù)據(jù)庫恢復技術_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十章數(shù)據(jù)庫恢復技術本章目標掌握事務的基本概念和事務的ACID性質。了解數(shù)據(jù)庫恢復技術的重要性,針對不同的故障類型,掌握恢復數(shù)據(jù)庫的策略和方法。重點和難點重點:牢固掌握事務的基本概念和事務的ACID性質。要掌握數(shù)據(jù)庫故障恢復的策略和方法。同學們要在學習完這些知識后把這些問題聯(lián)系起來,提升對這些技術的理解和掌握。難點:掌握日志文件的使用,系統(tǒng)故障、介質故障的恢復方法。對于剛剛學習數(shù)據(jù)庫的學生來講并不體會數(shù)據(jù)庫故障恢復的復雜性和重要性。保證數(shù)據(jù)庫系統(tǒng)在遇到故障時能及時恢復正常運行,提高抗故障抗災難的能力。形成一個邏輯工作單位的數(shù)據(jù)庫操作匯集,稱為“事務”。事務處理技術主要包括:數(shù)據(jù)庫恢復技術。并發(fā)控制技術。10.1事務的基本概念一、事務(Transaction)事務是一個操作序列。這些操作要么都做,要么都不做,是一個不可分割的工作單位,是用戶定義的一個數(shù)據(jù)庫環(huán)境中的邏輯工作單位。相當于操作系統(tǒng)環(huán)境中的“進程”概念。事務和程序是現(xiàn)兩個概念。在關系數(shù)據(jù)庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。一個應用程序通常包含多個事務。在SQL語言,一個事務由應用程序中一組操作序列組成。定義一個事務開始:

BEGINTRANSACTION

提交一個事務正常結束:

COMMITTRANSACTION

顯式定義方式BEGINTRANSACTIONBEGINTRANSACTIONSQL語句1SQL語句1

SQL語句2SQL語句2

。。。。。。。。。。

COMMITROLLBACK隱式方式當用戶沒有顯式地定義事務時,DBMS按缺省規(guī)定自動劃分事務提交事務的所有操作(讀+更新)事務中所有對數(shù)據(jù)庫的更新永久生效回滾事務:

ROLLBACKTRANSACTION事務運行的過程中發(fā)生了故障,不能繼續(xù)執(zhí)行的所有更新操作事務回滾到開始時的狀態(tài)

例子:定義一個事務向sc表插入3條記錄,并提交完成。USEXkGO--開始事務BEGINTRANSACTIONINSERTSC(Sno,Cno,Grade)VALUES('00000025','1',78)INSERTSC(Sno,Cno,Grade)VALUES('00000025','2',67)INSERTSC(Sno,Cno,Grade)VALUES('00000025','3',94)--提交事務--撤銷事務COMMITTRANSACTION

ROLLBACKTRANSACTION二、事務的特性為保證數(shù)據(jù)庫的完整性,事務必須具有下列四個性質:1、原子性(Atomicity)事務的所有操作必須完成,否則事務將被撤消。因此,事務是不可分割的最小工作單位,它的所有操作要么全部執(zhí)行,要么一個也不執(zhí)行,它是一個整體。2、一致性(Consistency)

事務執(zhí)行的結果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。不一致狀態(tài):數(shù)據(jù)庫中包含失敗事務的結果一致性與原子性銀行轉帳:從帳號A中取出一萬元,存入帳號B。定義一個事務,該事務包括兩個操作這兩個操作要么全做,要么全不做全做或者全不做,數(shù)據(jù)庫都處于一致性狀態(tài)。如果只做一個操作,數(shù)據(jù)庫就處于不一致性狀態(tài)。

B=B+1

A=A-1BA3、隔離性(Isolation)

指當一個事務執(zhí)行期間所使用的數(shù)據(jù),不能被其它的事務再使用,此事務對當前操作的數(shù)據(jù)具有獨占性,直到此事務結束為止。這種事務的隔離性可保證在多用戶的數(shù)據(jù)庫環(huán)境中多個用戶同時操作一個數(shù)據(jù)庫時能保持數(shù)據(jù)庫的一致性和正確性。T1的修改被T2覆蓋了!

讀A=16

A←A-3寫回A=13①讀A=16

③A←A-1

寫回A=15

④T2T14、持久性(Durability)持續(xù)性也稱永久性(Permanence)一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其他操作或故障不應該對其執(zhí)行結果有任何影響。事務的特性

事務是恢復和并發(fā)控制的基本單位。保證事務ACID特性是事務處理的重要任務。事務ACID可能遭到破壞的因素有:(1)多個事務并發(fā)運行時,不同事務的操作交叉執(zhí)行。(2)事務在運行過程中被強行停止。這些就是數(shù)據(jù)庫管理系統(tǒng)中恢復機制和并發(fā)控制機制的責任。10.2數(shù)據(jù)庫恢復概述數(shù)據(jù)庫恢復:將數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)的功能。故障是不可避免的計算機硬件故障系統(tǒng)軟件和應用軟件的錯誤操作員的失誤惡意的破壞故障的影響運行事務非正常中斷破壞數(shù)據(jù)庫數(shù)據(jù)庫恢復概述數(shù)據(jù)庫管理系統(tǒng)對故障的對策DBMS提供恢復子系統(tǒng)保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復到某種邏輯一致的狀態(tài)保證事務ACID恢復技術是衡量系統(tǒng)優(yōu)劣的重要指標10.3故障的種類數(shù)據(jù)庫系統(tǒng)中可能發(fā)生各種各樣的故障,可分為幾類:一、事務內部的故障:事務內部的故障有的是可以通過事務本身發(fā)現(xiàn)。例如:設銀行有一轉帳事務,從帳號A的金額轉一筆款子X到帳號B,此時應該帳號A的余額-X,將帳號B的余額+X。如果帳號A的余額不足,那么,兩個事務都不做,否則都做。事務故障的恢復發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部分修改寫回磁盤事務故障的恢復:撤消事務(UNDO)強行回滾(ROLLBACK)該事務清除該事務對數(shù)據(jù)庫的所有修改,使得這個事務象根本沒有啟動過一樣事務故障例如,銀行轉賬事務,這個事務把一筆金額從一個賬戶甲轉給另一個賬戶乙。

BEGINTRANSACTION

讀賬戶甲的余額BALANCE;

BALANCE=BALANCE-AMOUNT;(AMOUNT為轉賬金額)

寫回BALANCE;

IF(BALANCE<0)THEN{

打印'金額不足,不能轉賬';

ROLLBACK;(撤銷剛才的修改,恢復事務)}ELSE{

讀賬戶乙的余額BALANCE1;

BALANCE1=BALANCE1+AMOUNT;寫回BALANCE1;

COMMIT;

}事務內部的故障(續(xù))事務內部更多的故障是非預期的,是不能由應用程序處理的。運算溢出并發(fā)事務發(fā)生死鎖而被選中撤銷該事務違反了某些完整性限制等事務故障的恢復:撤消事務(UNDO)二、系統(tǒng)故障系統(tǒng)故障通常稱為軟故障,是指造成系統(tǒng)停止或錯誤運行,從而要重新啟動系統(tǒng)。整個系統(tǒng)的正常運行突然被破壞所有正在運行的事務都非正常終止內存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失外部存儲設備上的數(shù)據(jù)未受影響如:操作系統(tǒng)或DBMS代碼錯誤操作員操作失誤特定類型的硬件錯誤(如CPU故障)突然停電系統(tǒng)故障的恢復

清除尚未完成的事務對數(shù)據(jù)庫的所有修改系統(tǒng)重新啟動時,恢復程序要強行撤消(UNDO)所有未完成事務將緩沖區(qū)中已完成事務提交的結果寫入數(shù)據(jù)庫系統(tǒng)重新啟動時,恢復程序需要重做(REDO)所有已提交的事務三、介質故障硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失介質故障比前兩類故障的可能性小得多,但破壞性大得多硬件故障磁盤損壞磁頭碰撞操作系統(tǒng)的某種潛在錯誤瞬時強磁場干擾介質故障的恢復裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本。

重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數(shù)據(jù)庫。四、計算機病毒是一種人為的故障和破壞,是一些惡作劇研制的一種計算機程序,可以繁殖和傳播。10.4恢復的實現(xiàn)技術數(shù)據(jù)庫恢復的基本原則:要使數(shù)據(jù)庫具有可恢復性,基本原理就是“冗余”,即數(shù)據(jù)的重復存儲。數(shù)據(jù)庫恢復實現(xiàn)方法:(1)數(shù)據(jù)轉儲(dump)(又稱“倒庫”)轉儲是指DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。一時發(fā)生故障,可以將后備副本重新裝入。(2)建立“日志”文件(logging)。日志文件是用來記錄事務對數(shù)據(jù)庫的更新操作的文件。對于數(shù)據(jù)庫的每次插入、刪除或修改,記下改變前后的值,寫到““日志”文件,以便有案可查。10.4.1數(shù)據(jù)轉儲轉儲是指系統(tǒng)管理員將整個數(shù)據(jù)庫復制到另一個磁盤上的保存過程。這些備份的數(shù)據(jù)文件稱為后備副本或后援副本。轉儲是數(shù)據(jù)庫恢復中采用的最基本的技術。一旦數(shù)據(jù)庫發(fā)生故障,就可以將后備副本重新裝入,恢復數(shù)據(jù)庫中的數(shù)據(jù)。重裝后備副本只能將數(shù)據(jù)庫恢復到轉儲時的狀態(tài)。轉儲是十分耗費時間和資源的,不能頻繁進行。轉儲

故障發(fā)生點

轉儲

運行事務

↓正常運行

─┼───────┼─────────────

Ta

Tb

Tf

重裝后備副本

重新運行事務恢復

─┼───────┴------------→轉儲可分為靜態(tài)轉儲和動態(tài)轉儲。靜態(tài)轉儲:在系統(tǒng)中無運行事務時進行的轉儲操作。轉儲開始時數(shù)據(jù)庫處于一致性狀態(tài)轉儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動優(yōu)點:實現(xiàn)簡單缺點:降低了數(shù)據(jù)庫的可用性轉儲必須等用戶事務結束新的事務必須等轉儲結束動態(tài)轉儲:轉儲期間允許對數(shù)據(jù)庫進行存取或修改轉儲操作與用戶事務并發(fā)進行利用動態(tài)轉儲得到的副本進行故障恢復需要把動態(tài)轉儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)優(yōu)點不用等待正在運行的用戶事務結束不會影響新事務的運行動態(tài)轉儲的缺點不能保證副本中的數(shù)據(jù)正確有效轉儲的方式有海量轉儲和增量轉儲。每次轉儲整個數(shù)據(jù)庫,稱為海量轉儲。只轉儲上次轉儲之后變化的數(shù)據(jù),稱為增量轉儲.海量轉儲:每次轉儲全部數(shù)據(jù)庫增量轉儲:只轉儲上次轉儲后更新過的數(shù)據(jù)海量轉儲與增量轉儲比較從恢復角度看,使用海量轉儲得到的后備副本進行恢復往往更方便但如果數(shù)據(jù)庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效轉儲方法小結(轉儲方法分類)轉儲策略例:每天晚上進行動態(tài)增量轉儲每周進行一次動態(tài)海量轉儲每月進行一次靜態(tài)海量轉儲

轉儲狀態(tài)動態(tài)轉儲靜態(tài)轉儲轉儲方式海量轉儲動態(tài)海量轉儲靜態(tài)海量轉儲增量轉儲動態(tài)增量轉儲靜態(tài)增量轉儲10.4.2登記日志文件(Logging)一、日志文件的格式和內容什么是日志文件日志文件(log)是用來記錄事務對數(shù)據(jù)庫的更新操作的文件DBMS系統(tǒng)通過事務日志保存所有的更新數(shù)據(jù)庫事務的操作過程。可以利用事務日志保存的信息來恢復由程序非法中止或者由硬件系統(tǒng)故障等所造成的數(shù)據(jù)丟失。日志文件主要的兩種格式:以記錄為單位的日志文件和以數(shù)據(jù)塊為單位的日志文件。記錄為單位的日志文件需要登記內容包括:各個事務的開始標記(BEGINTRANSACTION)

各個事務的結束標記(COMMIT或ROLLBACK)

各個事務的所有更新操作

與事務有關的內部更新操作每個日志記錄的內容主要包括:事務標識操作的類型(插入、刪除或修改)操作對象更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)更新后數(shù)據(jù)的舊值(對刪除操作而言,此項為空值)二、日志文件的作用(1)事務故障恢復和系統(tǒng)故障恢復必須用日志文件(2)在動態(tài)轉儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復數(shù)據(jù)庫。(3)在靜態(tài)轉儲方式中,也非唯心建立日志文件。見圖10.2利用日志文件恢復三、登記日志文件登記日志文件必須遵循兩條原則:(1)登記的次序嚴格按并發(fā)事務執(zhí)行的時間次序。(2)必須先寫日志文件,后寫數(shù)據(jù)庫文件。10.5恢復策略當系統(tǒng)運行過程中發(fā)生故障,利用數(shù)據(jù)庫的后備副本和日志文件就可以將數(shù)據(jù)恢復到故障前的某一個一致性狀態(tài)。不同故障其恢復策略和方法方式也不一樣。數(shù)據(jù)庫系統(tǒng)的恢復包括事務恢復、數(shù)據(jù)庫狀態(tài)恢復和系統(tǒng)服務恢復。10.5.1事務故障的恢復事務故障是指事務在運行至正常終止點前被中止時,這時恢復程序應撤消(UNDO)事務已對數(shù)據(jù)庫的修改,具體做法如下:(1)反向掃描文件日志(即從后向前掃描日志文件),查找該事務的更新操作。(2)對該事務的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫。如果記錄中是插入操作,則相當于做刪除操作(因為此時“更新前的值”為空);若記錄中是刪除操作,則相當于做插入操作(因為此時“更新后的值”為空);若是修改操作,則相當于用修改前的值代替修改后的值。(3)繼續(xù)反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理。(4)如此處理下去,直到讀到此事務開始標記,事務故障恢復完成。10.5.2系統(tǒng)故障的恢復系統(tǒng)故障造成不一致狀態(tài)的原因有2個:一是一些未完成的事務對數(shù)據(jù)庫的更新操作已寫入數(shù)據(jù)。二是一些已提交事務對數(shù)據(jù)庫的更新還留在緩沖區(qū)不及寫入數(shù)據(jù)庫。系統(tǒng)的恢復步驟是:(1)正向掃描日志文件,將其事務標記為重做隊列(REDO)。(2)對撤消隊列中的各個事務進行撤消(UNDO)處理。反向掃描日志文件,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫。(3)對重做隊列中的各個事務進行重做(REDO)處理。正向掃描日志文件,即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。系統(tǒng)故障的恢復是由系統(tǒng)自動完成的,不需要用戶的干預。10.5.3介質故障的恢復介質故障是指外存設備故障,磁盤上的物理數(shù)據(jù)和日志文件被破壞。主要包括:扇區(qū)損壞、磁場干擾而引起的數(shù)據(jù)錯誤等等。恢復方法具體如下:(1)裝入最新的后備數(shù)據(jù)庫副本.(2)裝入有關的日志文件副本.介質故障的恢復必須由DBA參與.10.6具有檢查點的恢復技術當事務發(fā)生故障時,必須檢查日志,決定哪些需要REDO,哪些需要UNDO。原則上需要搜索整個事務日志,但這種做法不現(xiàn)實,開銷太大。為此,引入檢查點的機制,以提高恢復的機制。(1)將當前位于主存的所有日志記錄輸出到穩(wěn)定存儲器上。(2)將所有修改了的緩沖塊輸出到磁盤上。(3)將日志記錄輸出到穩(wěn)定存儲器。10.6具有檢查點的恢復技術檢查點(也稱安全點、恢復點):當事務正常運行時,數(shù)據(jù)庫系統(tǒng)按一定的時間間隔設檢查點。一旦系統(tǒng)需要恢復數(shù)據(jù)庫狀態(tài),就可以根據(jù)最新的檢查點的信息,從檢查點開始執(zhí)行,不必從頭開始執(zhí)行那些被中斷的事務?;謴妥酉到y(tǒng)采取的不同策略Tc(檢查點)Tf(系統(tǒng)故障)T1T2T3T4T5時間撤消撤消

在檢查點辶前就已經(jīng)成功結束,即使系統(tǒng)崩潰,也不要做任何操作在檢查點辶前還沒有結束,但在系統(tǒng)崩潰前已經(jīng)結束,所以需要做REDO操作在檢查點辶前已經(jīng)開始,但在系統(tǒng)崩潰尚未結束,故要做UNDO操作在檢

溫馨提示

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

最新文檔

評論

0/150

提交評論