陳益全,蔡澤利
瓊臺師范高等??茖W校信息技術系,海南海口 571100
當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的。但在對數據庫應用的過程中,由于人為誤操作、人為惡意破壞、系統(tǒng)的不穩(wěn)定、存儲介質的損壞等等原因而影響數據庫系統(tǒng)的操作,影響數據庫中數據的正確性,甚至破壞數據庫使數據庫中部分或全部數據丟失,這將帶來嚴重后果。因此,當發(fā)生上述情況后,人們希望能重新建立一個完整的數據庫,該處理過程稱為數據庫恢復。
事務(Transaction)是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。
事務有4個特性。原子性:事務是數據庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做;一致性:事務執(zhí)行的結果必須是使數據庫從一個一致性狀態(tài)變到另一個一致性狀態(tài);隔離性:一個事務的執(zhí)行不能被其他事務干擾,即一個事務內部的操作及使用的數據對其他并發(fā)事務是隔離的,同時并發(fā)執(zhí)行的各個事務之間不能互相干擾;持續(xù)性:一個一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的,接下來的其他操作或故障不應該對其執(zhí)行結果有任何影響。
事務是數據庫恢復和并發(fā)控制的基本單位。
事務故障是指某個事務在運行過程中由于種種原因未運行至正常終止,而此時數據庫可能處于不一致狀態(tài)。發(fā)生事務故障時,該事務可能已把對數據庫的部分修改寫回磁盤。
恢復方法:撤消事務(UNDO)。強行回滾(ROLLBACK)該事務;清除該事務對數據庫的所有修改,使得這個事務象根本沒有啟動過一樣。
系統(tǒng)故障是指造成系統(tǒng)停止運轉的任何事件,使得系統(tǒng)要重新啟動。系統(tǒng)故障通常使所有正在運行的事務都非正常終止、內存中數據庫緩沖區(qū)的信息全部丟失。
恢復策略:1)清除尚未完成的事務對數據庫的所有修改。系統(tǒng)重新啟動時,恢復程序要強行撤消(UNDO)所有未完成事務;2)將緩沖區(qū)中已完成事務提交的結果寫入數據庫。系統(tǒng)重新啟動時,恢復程序需要重做(REDO)所有已提交的事務。
介質故障稱為硬故障。硬件故障使存儲在外存中的數據部分丟失或全部丟失,比如磁盤損壞、磁頭碰撞、瞬時強磁場干擾等。介質故障比前兩類故障的可能性小得多,但破壞性大得多。
恢復策略:裝入數據庫發(fā)生介質故障前某個時刻的數據副本;重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數據庫。
數據庫恢復的基本原理是建立冗余數據。
數據轉儲是指將整個數據庫復制到磁帶或另一個磁盤上保存起來的過程。這些備用的數據文本稱為后備副本或后援副本。當數據庫遭到破壞后可以將后備副本重新裝入,但重裝后備副本只能將數據庫恢復到轉儲時的狀態(tài),要想恢復到故障發(fā)生時的狀態(tài),必須重新運行自轉儲以后的所有更新事務。
日志文件(log)是用來記錄事務對數據庫的更新操作的文件。
日志文件內容包括:各個事務的開始標記、各個事務的結束標記、各個事務的所有更新操作。每個事務開始的標記、每個事務的結束標記和每個更新操作均作為日志文件中的一個記錄,每條日志記錄的內容
又包括事務標識、操作類型(插入、刪除或修改)、操作對象(記錄ID、Block NO.)、更新前數據的舊值(對插入操作而言,此項為空值)、更新后數據的新值(對刪除操作而言, 此項為空值)。
日志文件的可以用來進行事務故障恢復和系統(tǒng)故障恢復,并協(xié)助后備副本進行介質故障的恢復。
這種技術在日志文件中增加一類新的記錄——檢查點(checkpoint)記錄,增加一個重新開始文件,并讓恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志。
使用檢查點方法可以改善恢復效率。當事務T在一個檢查點之前提交,T對數據庫所做的修改一定都已寫入數據庫,寫入時間是在這個檢查點建立之前或在這個檢查點建立之時。這樣,在進行恢復處理時,沒有必要對事務T執(zhí)行REDO操作。
數據庫管理系統(tǒng)自動把整個數據庫或其中的關鍵數據復制到另一個磁盤上,并自動保證鏡像數據與主數據的一致性。出現(xiàn)介質故障時,數據庫管理系統(tǒng)自動利用鏡像磁盤數據進行數據庫的恢復,不需要關閉系統(tǒng)和重裝數據庫副本。
故障是不可避免的。我們一定要高度重視系統(tǒng)數據安全工作,防止在出現(xiàn)意外情況時能夠最大限度地減少損失。
[1]康懿.基于SQLServer的數據庫恢復技術[J].科技信息,2009(29).
[2]龔雄濤.SQLServer數據庫恢復技術研究[J].科技信息,2009(27).
[3]周如意.基于檢查點的數據庫恢復技術[J].沙洲職業(yè)工學院學報,2006(2).