資源描述:
《數(shù)據(jù)庫技術講義 第7章 數(shù)據(jù)庫恢復技術》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、第七章數(shù)據(jù)庫恢復技術事務是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應用程序的基本邏輯單元。事務處理技術主要包括數(shù)據(jù)庫恢復技術和并發(fā)控制技術。本章主要討論數(shù)據(jù)庫恢復的概念和常用技術。7.1事務的基本概念一、事務(Transaction)是一個操作序列,這些操作要么都做,要么都不做,是一個不可分割的工作單元。事務通常以BEGINTRANSACTION開始以COMMIT或ROLLBACK操作結束COMMIT:提交事務中的所有操作ROLLBACK:撤銷已作的所有操作,滾回到事務的開始狀態(tài)事務是并發(fā)控制的基本單位7.1事務的基本概念二、事務的特性事務具有4個特性:原子性、一致性
2、、隔離性和持續(xù)性。1.原子性事務是數(shù)據(jù)庫的邏輯工作單位,事務中包括的操作要么都做,要么都不做。2.一致性事務執(zhí)行的結果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變?yōu)榱硪粋€一致性狀態(tài)。當一個事務正常提交,數(shù)據(jù)庫處于一致性狀態(tài)。而一個事務未正常提交,那么事務對數(shù)據(jù)庫的修改有一部分已寫入物理數(shù)據(jù)庫,這時數(shù)據(jù)庫處于不一致狀態(tài)。7.1事務的基本概念例如:某公司在銀行有A、B兩個帳戶,現(xiàn)在要從A帳戶向B帳號轉(zhuǎn)1萬元,其操作如下:A=A-1B=B+1如果執(zhí)行完第一步有用意外原因而使第二步?jīng)]有執(zhí)行完,這時數(shù)據(jù)庫處于不一致狀態(tài),因此這兩個操作要么都做,要么都不做數(shù)據(jù)庫才能處于一致性狀態(tài)
3、。一致性和原子性密切相關。7.1事務的基本概念3.隔離性一個事務的執(zhí)行不能被其它事務干擾。即一個事務內(nèi)部的操作及使用的數(shù)據(jù)對其它事務是隔離的,并發(fā)執(zhí)行的各個事務直接不能相互干擾。例如A=5讀AA=A+1讀AA=A+1寫A寫A7.1事務的基本概念4.持續(xù)性持續(xù)性也稱永久性,指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其它操作或故障不應對其執(zhí)行結果有任何影響。事務的ACID特性遭到破壞的因素有:1.多個事務并發(fā)運行,不同事務的操作交叉執(zhí)行。2.事務在運行過程中被強行停止。7.3故障的種類一、事務內(nèi)部的故障事務內(nèi)部的故障有的是可以通過事務
4、程序本身發(fā)現(xiàn)的,有的是非預期的,不能由事務程序處理的。事務故障意味著事務沒有達到頂期的終點(COMMIT或者顯式的ROLLBACK),因此,數(shù)據(jù)庫可能處于不正確狀態(tài)。恢復程序要在不影響其他事務運行的情況下,強行回滾(ROLLBACK)該事務,即撤銷該事務已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務好像根本沒有啟動一樣。這類恢復操作稱為事務撤銷(UNDO)。7.3故障的種類二、系統(tǒng)故障系統(tǒng)故障是指造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使系統(tǒng)要重新啟動。這類故障影響正在運行的所有事務。對于一些尚未完成的事務要強行回滾(UNDO),對于那些已經(jīng)完成,但仍處于緩沖區(qū)中沒有寫到物
5、理硬盤上的事務,需要重做(REDO)所有已提交的事務。7.3故障的種類三、介質(zhì)故障系統(tǒng)故障常稱為軟故障,介質(zhì)故障稱為硬故障。這類故障將破壞全部或部分數(shù)據(jù)庫,并影響正在存取這部分數(shù)據(jù)的所有事務,破壞性最大。要依靠備份恢復。四、計算機病毒對數(shù)據(jù)破壞業(yè)非常大,也要靠備份來恢復。7.3故障的種類對數(shù)據(jù)庫的影響有兩種可能:一是數(shù)據(jù)庫本身被破壞;二是數(shù)據(jù)庫沒有破壞,但是數(shù)據(jù)可能不正確,這是因為事務的允許被非正常終止。恢復的基本原理非常簡單,就是冗余。這就是說,數(shù)據(jù)庫重任何一部分被破壞的或不正確的數(shù)據(jù)可以根據(jù)存儲在系統(tǒng)別處的冗余數(shù)據(jù)來重建。7.4恢復的實現(xiàn)技術恢復機制涉
6、及的兩個關鍵問題是:如何建立冗余數(shù)據(jù);如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復。建立冗余數(shù)據(jù)最常用的技術是數(shù)據(jù)轉(zhuǎn)儲和登錄日志文件。通常在一個數(shù)據(jù)庫系統(tǒng)中,這兩種方法一起使用。7.4.1數(shù)據(jù)轉(zhuǎn)儲數(shù)據(jù)轉(zhuǎn)儲是數(shù)據(jù)庫恢復中采用的基本技術。所謂轉(zhuǎn)儲即DBA定期地將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存的過程,這些備用的數(shù)據(jù)文件稱為后備副本或后援副本。當數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入,但重裝后備副本只能將數(shù)據(jù)庫恢復到轉(zhuǎn)儲時的狀態(tài),要恢復到故障發(fā)生時的狀態(tài),必須重新運行自轉(zhuǎn)儲以后的所有更新事務。7.4.1數(shù)據(jù)轉(zhuǎn)儲轉(zhuǎn)儲可以分為靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。靜態(tài)轉(zhuǎn)儲是在系統(tǒng)重無允許
7、事務時進行的轉(zhuǎn)儲操作。轉(zhuǎn)儲操作開始時,數(shù)據(jù)庫處于一致性狀態(tài),而轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動。靜態(tài)轉(zhuǎn)儲得到的一定是一個數(shù)據(jù)一致性的副本,但會降低數(shù)據(jù)庫的并發(fā)性、可用性。動態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改。動態(tài)轉(zhuǎn)儲必須把轉(zhuǎn)儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件。通過后備副本和日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)。7.4.1數(shù)據(jù)轉(zhuǎn)儲轉(zhuǎn)儲還可以分為海量轉(zhuǎn)儲和增量轉(zhuǎn)儲兩種方式。海量轉(zhuǎn)儲是指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。增量轉(zhuǎn)儲則指每次只轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新的數(shù)據(jù)。7.4.2登記日志文件一、日志文件的格式和內(nèi)容日志文件是用來記錄事
8、務對數(shù)據(jù)庫的更新操作的文件。不同數(shù)據(jù)庫系統(tǒng)采用的日志文件格式并不完