資料庫恢復技術
v事務(Transaction)是使用者定義的一個數據庫操作序列,這些操作要麼全做,要麼全不做,是一個不可分割的工作單位。
v事務和程式是兩個概念
n在關係資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程式
n一個程式通常包含多個事務
v事務是恢復和併發控制的基本單位
事務的ACID特性:
v原子性(Atomicity)
v一致性(Consistency)
v隔離性(Isolation)
v持續性(Durability )
v事務是資料庫的邏輯工作單位
n事務中包括的諸操作要麼都做,要麼都不做
v事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態
v一致性狀態
n資料庫中只包含成功事務提交的結果
v不一致狀態
n資料庫系統執行中發生故障,有些事務尚未完成就被迫中斷;
n這些未完成事務對資料庫所做的修改有一部分已寫入物
理資料庫,這時資料庫就處於一種不正確的狀態
一個事務的執行不能被其他事務干擾
n一個事務內部的操作及使用的資料對其他併發事務是隔離的
n併發執行的各個事務之間不能互相干擾
持續性也稱永久性(Permanence)
n一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。
n接下來的其他操作或故障不應該對其執行結果有任何影響。
保證事務
破壞事務ACID特性的因素
(1) 多個事務並行執行時,不同事務的操作交叉執行
l資料庫管理系統必須保證多個事務的交叉執行不影響這些事務的隔離性
(2)事務在執行過程中被強行停止
l資料庫管理系統必須保證被強行終止的事務對資料庫和其他事務沒有任何影響
故障是不可避免的
n計算機硬體故障
n軟體的錯誤
n操作員的失誤
n惡意的破壞
故障的影響
n執行事務非正常中斷,影響資料庫中資料的正確性
n破壞資料庫,全部或部分丟失資料
資料庫的恢復
n資料庫管理系統必須具有把資料庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致狀態或完整狀態)的功能,這就是資料庫的恢復管理系統對故障的對策
v恢復子系統是資料庫管理系統的一個重要組成部分
v恢復技術是衡量系統優劣的重要指標
故障的分類
1.事務內部的故障
2.系統故障
3.介質故障
4.計算機病毒
事務內部的故障
n有的是可以通過事務程式本身發現的(見下面轉賬事
務的例子)
n有的是非預期的,不能由事務程式處理的。
事務內部更多的故障是非預期的,是不能由應用程式處理的。
n運算溢位
n併發事務發生死鎖而被選中撤銷該事務
n違反了某些完整性限制而被終止等
以後,事務故障僅指這類非預期的故障
事務故障意味著
n事務沒有達到預期的終點(COMMIT或者顯式的ROLLBACK)
n資料庫可能處於不正確狀態。
事務故障的恢復:事務撤消(UNDO)
n強行回滾(ROLLBACK)該事務
n撤銷該事務已經作出的任何對資料庫的修改,使得該事務象根本沒有啟動一樣
系統故障的常見原因
v特定型別的硬體錯誤(如CPU故障)
v作業系統故障
v資料庫管理系統程式碼錯誤
v系統斷電、
系統故障的恢復
v發生系統故障時,一些尚未完成的事務的結果可能已送入物理資料庫,造成資料庫可能處於不正確狀態。
n恢復策略:系統重新啟動時,恢復程式讓所有非正常終止的事務回滾,強行撤消(UNDO)所有未完成事務
v發生系統故障時,有些已完成的事務可能有一部分甚至全部留在緩衝區,尚未寫回到磁碟上的物理資料庫中,系統故障使得這些事務對資料庫的修改部分或全部丟失
n恢復策略:系統重新啟動時,恢復程式需要重做(REDO)所有已提交的事務
v介質故障稱為硬故障,指外存故障
n磁碟損壞
n磁頭碰撞
n瞬時強磁場干擾
v介質故障破壞資料庫或部分資料庫,並影響正在存取這部分資料的所有事務
v介質故障比前兩類故障的可能性小得多,但破壞性大得多