數據庫恢復技術之事務

1.事務的基本概念

事務是用戶定義的一個數據庫操做序列,一個基本邏輯單元,這些操做要麼全作,要麼全不作。例如,在關係數據庫中,一個事務能夠是一條SQL語句,一組SQL語句或者整個程序。在SQL中定義事務的語句,主要包含如下三條:
begin transaction
commit
rollback
事務一般以begin transaction開始,以commit,或者commit結束。commit表示提交,即提交事務的全部操做。rollback表示回滾,即在事務運行過程當中,發生了某種故障,事務不能繼續執行,則對已完成的操做所有撤銷,回滾到事務開始時的狀態。

2.事務的四大特性

毋庸置疑,ACID。分別爲原子性(atomicity),一致性(consistency),隔離性(isolation),持久性(durability)。
原子性:事務是數據庫的邏輯工做單元,包含的操做要麼全作,要麼全不作。
一致性:事務執行的結果必須是從一個一致性狀態轉換爲另一個一致性狀態,即先後要保持一致。
隔離性:一個事務的執行不能被其餘事務干擾。
持續性:指一個事務一旦提交,其對數據庫中數據的改變就應該是持久性的。

3.故障的分類

主要分爲事務內部故障,系統故障,介質故障,病毒等。
事務內務故障:通常能夠經過事務程序自己發現,但大多數是非預期的,不能由事務程序處理的。處理方式:事務發生故障,通常意味着事務沒有達到預期的終點(commit,或者commit),致使數據庫處於不正確的狀態。通常經過事務撤銷(UNDO)恢復操做來處理。
系統故障:指形成系統中止運轉的任何事件,使得系統要從新啓動。如:特定類型的硬件錯誤,操做系統故障,以及系統斷電等。
介質故障:通常爲硬故障,即外存故障,如磁盤損壞,磁頭碰撞等。

4.恢復策略

首先,介紹兩個相關概念——數據轉儲,日誌文件。
數據轉儲是數據庫中採用的基本技術,即DBA按期地將整個數據庫複製到磁帶或者另外一個磁盤上保存起來的過程。這些備用數據稱爲後援副本或者後備副本。
                其中,包含靜態轉儲和動態轉儲。靜態轉儲是在系統中無運行事務時進行的轉儲操做。實現簡單,但會下降數據的可用性。
                動態轉儲,指在轉儲期間容許對數據庫進行存取或修改,即轉儲和用戶事務能夠併發執行。
日誌文件:用來記錄事務對數據庫更新操做的文件。
言歸正傳,下面介紹一下,事務故障恢復,系統故障恢復以及介質故障恢復。

事務故障恢復
恢復步驟:(1)反向掃描日誌文件,查找該事務的更新操做。
    (2)對該事務的更新操做執行逆操做。
    (3)繼續反向掃描日誌文件,查找該事務的其餘更新操做,並作一樣處理。
                            (4)如此處理下去,直到讀到此事務的開始標記,事務故障恢復就完成了。

系統故障恢復
恢復步驟:
                           (1)正向掃描日誌文件,找到故障發生前已經提交的事務,將其事務標識記入重作隊列(REDO)。同時,找出故障發生時還沒有發生的事務,將其事務標識記 入撤銷隊列(UNDO)。
  (2)對撤銷隊列中的各個事務進行撤銷處理。
  (3)對重作隊列中的各個事務進行重作處理。

介質故障恢復
        恢復步驟:重裝數據庫,而後重作已完成的事務。