第10章 數(shù)據(jù)庫恢復技術——復習筆記
瀏覽量: 次 發(fā)布日期:2023-09-10 22:00:20
第10章 數(shù)據(jù)庫恢復技術——復習筆記
第10章 數(shù)據(jù)庫恢復技術復習筆記01一、事務的基本概念01事務
事務是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。
事務和程序是兩個概念。一般地講,一個程序中包含多個事務。
事務的開始與結束可以由用戶顯式控制。如果用戶沒有顯式地定義事務,則由數(shù)據(jù)庫管理系統(tǒng)按默認規(guī)定自動劃分事務。在SOL中,定義事務的語句一般有三條:
BEGIN TRANSACTION;
COMMIT;
ROLLBACK;
02事務的ACID特性
(1)原子性
事務是數(shù)據(jù)庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做。
(2)一致性
事務執(zhí)行的結果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。
(3)隔離性
一個事務的執(zhí)行不能被其他事務干擾。即一個事務的內部操作及使用的數(shù)據(jù)對其他并發(fā)事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
(4)持續(xù)性
持續(xù)性也稱永久性(Permanence),指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其他操作或故障不應該對其執(zhí)行結果有任何影響。
03影響ACID特性的因素
(1)多個事務并行運行時,不同事務的操作交叉執(zhí)行。
(2)事務在運行過程中被強行停止。
02
二、數(shù)據(jù)庫恢復概述
計算機系統(tǒng)中硬件的故障、軟件的錯誤、操作員的失誤以及惡意的破壞仍是不可避免的,這些故障輕則造成運行事務非正常中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分數(shù)據(jù)丟失。因此數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)(亦稱為一致狀態(tài)或完整狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復。
03
三、故障的種類
01事務內部的故障
銅陵數(shù)據(jù)恢復事務內部的故障有的是可以通過事務程序本身發(fā)現(xiàn)的,有的是非預期的,不能由事務程序處理。
事務故障意味著事務沒有達到預期的終點(COMMIT或者顯式的ROLLBACK),因此,數(shù)據(jù)庫可能處于不正確狀態(tài)。恢復程序要在不影響其他事務運行的情況下,強行回滾該事務,即撤銷該事務已經作出的任何對數(shù)據(jù)庫的修改,使得該事務好像根本沒有啟動一樣。這類恢復操作稱為事務撤銷(UNDO)。
02系統(tǒng)故障
系統(tǒng)故障是指造成系統(tǒng)停止運轉的任何事件,使得系統(tǒng)要重新啟動。發(fā)生系統(tǒng)故障時,一些尚未完成的事務的結果可能已送入物理數(shù)據(jù)庫,從而造成數(shù)據(jù)庫可能處于不正確的狀態(tài)。為保證數(shù)據(jù)一致性,需要清除這些事務對數(shù)據(jù)庫的所有修改。
03介質故障
系統(tǒng)故障常稱為軟故障(soft crash),介質故障稱為硬故障(hard crash)。硬故障指外存故障,如磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。這類故障將破壞數(shù)據(jù)庫或部分數(shù)據(jù)庫,并影響正在存取這部分數(shù)據(jù)的所有事務。這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。
04計算機病毒
計算機病毒是一種人為的故障或破壞,是一些惡作劇者研制的一種計算機程序。這種程序與其他程序不同,它像微生物學所稱的病毒一樣可以繁殖和傳播,并造成對計算機系統(tǒng)包括數(shù)據(jù)庫的危害。
04
四、恢復的實現(xiàn)技術
01概述
恢復機制涉及的兩個關鍵問題是:
(1)如何建立冗余數(shù)據(jù);
(2)如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復。
02
數(shù)據(jù)轉儲
(1)定義
轉儲即數(shù)據(jù)庫管理員定期地將整個數(shù)據(jù)庫復制到磁帶、磁盤或其他存儲介質上保存起來的過程。這些備用的數(shù)據(jù)稱為后備副本(backup)或后援副本。
(2)方法
當數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入,但重裝后備副本只能將數(shù)據(jù)庫恢復到轉儲時的狀態(tài),要想恢復到故障發(fā)生時的狀態(tài),必須重新運行自轉儲以后的所有更新事務。
轉儲是十分耗費時間和資源的,不能頻繁進行。數(shù)據(jù)庫管理員應該根據(jù)數(shù)據(jù)庫使用情況確定一個適當?shù)霓D儲周期。
(3)分類
轉儲按狀態(tài)可分為靜態(tài)轉儲和動態(tài)轉儲,按方式可分為海量轉儲和增量轉儲,數(shù)據(jù)分類方式如表10-1所示。
表10-1 數(shù)據(jù)轉儲分類
轉儲方式
轉儲狀態(tài)
動態(tài)轉儲
靜態(tài)轉儲
海量轉儲
動態(tài)海量轉儲
靜態(tài)海量轉儲
增量轉儲
動態(tài)增量轉儲
靜態(tài)增量轉儲
①靜態(tài)轉儲
靜態(tài)轉儲是在系統(tǒng)中無運行事務時進行的轉儲操作。靜態(tài)轉儲簡單,通過靜態(tài)轉儲得到的一定是一個數(shù)據(jù)一致性的副本。但轉儲必須等待正運行的用戶事務結束才能進行,新的事務必須等待轉儲結束才能執(zhí)行,這會降低數(shù)據(jù)庫的可用性。
②動態(tài)轉儲
動態(tài)轉儲是指轉儲期間允許對數(shù)據(jù)庫進行存取或修改,即轉儲和用戶事務可以并發(fā)執(zhí)行。動態(tài)轉儲可以克服靜態(tài)轉儲的缺點,它不用等待正在運行的用戶事務結束,也不會影響新事務的運行。但轉儲結束時后援副本上的數(shù)據(jù)并不能保證正確有效。必須把轉儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件(log file)。
③海量轉儲
海量轉儲是指每次轉儲全部數(shù)據(jù)庫。
④增量轉儲
增量轉儲指每次只轉儲上一次轉儲后更新過的數(shù)據(jù)。
從恢復角度看,使用海量轉儲得到的后備副本進行恢復更方便些;但如果數(shù)據(jù)庫很大,事務處理又十分頻繁,而增量轉儲方式更實用更有效。
03登記日志文件
(1)日志文件的格式和內容
日志文件是用來記錄事務對數(shù)據(jù)庫的更新操作的文件。日志文件主要有以下兩種格式:
①以記錄為單位的日志文件
對于以記錄為單位的日志文件,日志文件中需要登記的內容包括:各個事務的開始標記;各個事務的結束標記;各個事務的所有更新操作。
每個日志記錄的內容主要包括:事務標識;操作的類型;操作對象;更新前數(shù)據(jù)的舊值;更新后數(shù)據(jù)的新值。
②以數(shù)據(jù)塊為單位的日志文件
日志記錄的內容包括事務標識和被更新的數(shù)據(jù)塊。
(2)日志文件的作用
①事務故障恢復和系統(tǒng)故障恢復必須用日志文件。
②在動態(tài)轉儲方式中必須建立日志文件,后備副本和日志文件結合起來才能有效地恢復發(fā)生故障時的數(shù)據(jù)庫。
③在靜態(tài)轉儲方式中,也可以建立日志文件。當數(shù)據(jù)庫毀壞后可重新裝入后提副本把數(shù)據(jù)庫恢復到轉儲結束時刻的正確狀態(tài),然后利用日志文件,把已完成的事務進行重做處理,對故障發(fā)生時尚未完成的事務進行撤銷處理。這樣不必重新運行那些已完成的事務程序就可把數(shù)據(jù)庫恢復到故障前某一時刻的正確狀態(tài)。
(3)登記日志文件
為保證數(shù)據(jù)庫是可恢復的,登記日志文件時必須遵循兩條原則:
①登記的次序嚴格按并發(fā)事務執(zhí)行的時間次序。
②必須先寫日志文件,后寫數(shù)據(jù)庫。
05
五、恢復策略
01事務故障的恢復
事務故障是指事務在運行至正常終止點前被終止,這時恢復子系統(tǒng)應利用日志文件撤銷(UNDO)此事務已對數(shù)據(jù)庫進行的修改。系統(tǒng)的恢復步驟是:
(1)反向掃描日志文件(即從最后向前掃描日志文件),查找該事務的更新操作;
(2)對該事務的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫;
(3)繼續(xù)反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理;
(4)如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。
02系統(tǒng)故障的恢復
系統(tǒng)故障的恢復是由系統(tǒng)在重新啟動時自動完成的,不需要用戶干預。系統(tǒng)的恢復步驟是:
(1)正向掃描日志文件(即從頭掃描日志文件),找出在故障發(fā)生前已經提交的事務,將其事務標識記入重做隊列(REDO_LIST)。同時找出故障發(fā)生時尚未完成的事務,將其事務標識記入撤銷隊列(UNDO_LIST);
(2)對撤銷隊列中的各個事務進行撤銷(UNDO)處理;
(3)對重做隊列中的各個事務進行重做處理。
03介質故障的恢復
發(fā)生介質故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,恢復方法是重裝數(shù)據(jù)庫,然后重做已完成的事務。
(1)裝入最新的數(shù)據(jù)庫后備副本(離故障發(fā)生時刻最近的轉儲副本),使數(shù)據(jù)庫恢復到最近一次轉儲時的一致性狀態(tài);
(2)裝入相應的日志文件副本(轉儲結束時刻的日志文件副本),重做已完成的事務。
06
六、具有檢查點的恢復技術
具有檢查點的恢復技術在日志文件中增加一類新的記錄——檢查點(check point)記錄,增加一個重新開始文件,并讓恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志。
01檢查點記錄的內容
(1)建立檢查點時刻所有正在執(zhí)行的事務清單;
(2)這些事務最近一個日志記錄的地址。
重新開始文件用來記錄各個檢查點記錄在日志文件中的地址。
02動態(tài)維護日志文件的方法
動態(tài)維護日志文件的方法是,周期性地執(zhí)行如下操作:建立檢查點,保存數(shù)據(jù)庫狀態(tài)。具體步驟是:
(1)將當前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上;
(2)在日志文件中寫入一個檢查點記錄;
(3)將當前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中;
(4)把檢查點記錄在日志文件中的地址寫入一個重新開始文件。
恢復子系統(tǒng)可以定期或不定期地建立檢查點保存數(shù)據(jù)庫狀態(tài)。檢查點可以按照預定的一個時間間隔建立,也可以按照某種規(guī)則建立檢查點。
03恢復步驟
系統(tǒng)使用檢查點方法進行恢復的步驟是:
(1)從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄;
(2)由該檢查點記錄得到檢查點建立時刻所有正在執(zhí)行的事務清單;
(3)從檢查點開始正向掃描日志文件;
(4)對UNDO_LIST中的每個事務執(zhí)行UNDO操作,對REDO_LIST中的每個事務執(zhí)行REDO操作。
07
七、數(shù)據(jù)庫鏡像
滁州數(shù)據(jù)恢復01定義
數(shù)據(jù)庫鏡像是指根據(jù)DBA的要求,自動把整個數(shù)據(jù)庫或其中的關鍵數(shù)據(jù)復制到另一個磁盤上。每當主數(shù)據(jù)庫更新時,DBMS自動把更新后的數(shù)據(jù)復制過去,即DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)庫的一致性。
02用處
(1)用于數(shù)據(jù)庫恢復
當出現(xiàn)介質故障時,可由鏡像磁盤繼續(xù)提供使用,同時 DBMS 自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復,不需要關閉系統(tǒng)和重裝數(shù)據(jù)庫副本。
(2)提高數(shù)據(jù)庫的可用性
在沒有出現(xiàn)故障時,當一個用戶對某個數(shù)據(jù)加排它鎖進行修改時,其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù),而不必等待該用戶釋放鎖。
. 達夢數(shù)據(jù)庫重啟,達夢數(shù)據(jù)庫重啟操作指南與注意事項
. 數(shù)據(jù)庫論文參考文獻,數(shù)據(jù)庫論文參考文獻綜述
. 內存數(shù)據(jù)庫排行,揭秘行業(yè)領先者
. 達夢數(shù)據(jù)庫comment報錯,達夢數(shù)據(jù)庫comment錯誤解析與應對策略
. 達夢數(shù)據(jù)庫啟動過程中會加載哪些文件,達夢數(shù)據(jù)庫啟動文件加載解析
. oracle數(shù)據(jù)庫數(shù)據(jù)恢復,Oracle數(shù)據(jù)庫數(shù)據(jù)恢復策略與實戰(zhàn)指南
. sqlserver誤刪數(shù)據(jù)庫怎么恢復,全面解析與實操步驟
. 達夢數(shù)據(jù)庫dca證書含金量,國產數(shù)據(jù)庫領域職業(yè)發(fā)展的敲門磚與能力認證
. 達夢數(shù)據(jù)庫數(shù)據(jù)恢復,達夢數(shù)據(jù)庫數(shù)據(jù)恢復策略與操作指南
. 達夢數(shù)據(jù)庫和mysql區(qū)別,特性對比與選擇指南
. 優(yōu)化數(shù)據(jù)庫的八種方法,高效優(yōu)化數(shù)據(jù)庫,輕松實現(xiàn)查詢加速與性能提升
. 達夢數(shù)據(jù)庫多少錢一套,一套多少錢,性能如何?
. oracle數(shù)據(jù)庫收費標準,全面了解授權模式與費用構成
. 國內主流數(shù)據(jù)庫有哪些,國內主流數(shù)據(jù)庫概覽
. sql2012還原備份的數(shù)據(jù)庫,sql2012怎么還原數(shù)據(jù)庫
. 數(shù)據(jù)庫 范式,什么是數(shù)據(jù)庫范式?
. 顯示所有的數(shù)據(jù)庫的命令為,如何顯示所有數(shù)據(jù)庫
. oracle數(shù)據(jù)庫官網,深入探索Oracle數(shù)據(jù)庫官網——您的數(shù)據(jù)庫學習與資源寶庫
. oracle數(shù)據(jù)庫導入dmp,Oracle數(shù)據(jù)庫導入dmp文件詳解