介質故障又叫硬故障,是由於硬體的可靠性較差而出現的存儲介質發生物理損壞,造成資料庫的數據全部或部分丟失。
介質故障即外存故障,如磁碟損壞、強磁場干擾等。這類故障發生的可能性較小,但破壞性很強。它使資料庫受到破壞,並影響正在存取數據的事務。
介質故障的恢復通常裝入資料庫發生介質故障前某個時刻的數據副本,然後重做自此時始的所有成功事務,將這些事務已提交的結果重新記入資料庫。
基本介紹
- 中文名:介質故障
- 別名:硬故障
- 概述:指外存故障,如磁碟損壞、磁頭碰撞,瞬時強磁場干擾等。
- 介質恢復:完全介質恢復和不完全介質恢復。
- 影響:介質故障會破壞存放在外存的資料庫中的部分或全部數據。
- 特點:發生可能性小,破壞性大
情況簡介,故障影響,介質故障恢復,故障種類,事務故障,系統故障,介質故障,計算機病毒,故障恢復手段,
情況簡介
系統故障常稱為軟故障,介質故障稱為硬故障。硬故障指外存故障,如磁碟損壞、磁頭碰撞,瞬時強磁場干擾等。此類故障將破壞資料庫或部分資料庫,並影響正在存取這部分數據的所有事務。此類故障比前兩類故障發生的可能性小得多,但破壞性最大。
介質故障是指由於各種原因引起的資料庫數據檔案、控制檔案或重做日誌檔案的損壞,導致系統無法正常運行。例如,磁碟損壞導致檔案系統被破壞。這就需要管理員提前做好資料庫的備份,否則將導致資料庫無法恢復。
故障影響
介質故障稱為硬故障。硬故障指外存故障,如磁碟損壞、磁頭碰撞,瞬時強磁場干擾等。此類故障將破壞資料庫或部分資料庫,並影響正在存取這部分數據的所有事務。此類故障比前兩類故障發生的可能性小得多,但破壞性最大。
計算機病毒可以繁殖、傳播並造成計算機系統的危害,己成為計算機系統包括資料庫的重要威脅。它也會造成介質故障同樣的後果,破壞外存上的資料庫,並影響正在存取這部分數據的所有事務。
在上述3種故障中,事務故障和系統故障都不會破壞外存中資料庫的數據,而介質故障將破壞存放在外存的資料庫中的部分數據或全部數據。因此,事務故障和系統故障可以由系統自動恢復,而介質故障必須藉助資料庫管理員的幫助,由資料庫管理員和系統一起恢復。
介質故障恢復
介質故障在所有的故障中,對資料庫系統造成的危害最大,磁碟上的物理數據和日誌檔案被破壞,這是最嚴重的一種故障,發生介質故障後,資料庫的物理數據和日誌記錄將被破壞。要恢復介質故障,只能使用基於數據轉儲的數據恢復技術。恢復時,首先重裝資料庫,然後重做事務。具體步驟如下:
(1)裝入最新的資料庫後備副本(離故障發生時刻最近的轉儲副本),使資料庫恢復到最近一次轉儲時的一致性狀態。對於動態轉儲的資料庫副本,還需同時裝入轉儲開始時刻的日誌檔案副本,利用恢復系統故障的方法,才能將資料庫恢復到一致性狀態。
(2)裝入相應的日誌檔案副本(轉儲結束時刻的日誌檔案副本),重做已完成的事務。即:首先掃描日誌檔案,找出故障發生時已提交的事務的標識,將其記入重做佇列。然後正向掃描日誌檔案,對重做佇列中的所有事務進行重做處理。即將日誌記錄中“更新後的值”寫人資料庫。這樣就可以將資料庫恢復至故障前某一時刻的一致狀態了。
介質故障是當一個檔案、個檔案的部分或一磁碟不能讀或不能寫時出現的故障。介質故障的恢復有以下兩種形式,它們決定於資料庫運行的歸檔方式。
介質故障是當一個檔案、個檔案的部分或一磁碟不能讀或不能寫時出現的故障。介質故障的恢復有以下兩種形式,它們決定於資料庫運行的歸檔方式。
①如果資料庫是可運行的,以致它的在線上日誌僅可重用但不能歸檔,此時介質恢復為使用最新的完全備份的簡單恢復。在完全備份執行的工作必須手工重做。
②如果資料庫可運行,且在線上日誌是被歸檔的,該介質故障的恢復是一個實際恢復過程,重構受損的資料庫恢復到介質故障前的一個指定事務一致狀態。不管哪種形式,介質故障的恢復總是將整個資料庫恢復到與故障之前的一個事務保持一致狀態。如果資料庫是在ARCHIⅣ VELOG方式運行,可有不同類型的介質恢復:完全介質恢復和不完全介質恢復。
(1)完全介質恢復。
完全介質恢復可恢復全部丟失的修改,僅當所有必要的日誌可用時才可能。有不同類型的完全介質恢復可使用,其決定於毀壞檔案和資料庫的可用性。
①關閉資料庫的恢復。當資料庫可被裝配是關閉的,完全不能正常使用,此時可進行全部的或單個毀壞數據檔案的完全介質恢復。
②打開資料庫的脫機表空間的恢復。當資料庫是打開時,完全介質恢復可以處理。損的資料庫表空間是在線上的,可以使用,而受損表空間是脫機的,其所有數據檔案作為恢復的對象。
③打開資料庫的脫機表空間的單個數據檔案的恢復。當資料庫是打開時,完全介質恢復可以處理。未損的資料庫表空間是在線上的,可以使用,而所損的表空間是脫機的,該表空間指定所損的數據檔案可被恢復。
④使用備份的控制檔案的完全介質恢復。當控制檔案所有拷貝由於磁碟故障而受損時,可進行介質恢復而不丟失數據
(2)不完全介質恢復
不完全介質恢復是在完全介質恢復不可能或不要求時進行的介質恢復。重構受損的資料庫,使其恢復到介質故障前或用戶出錯之前的一個事務一致性狀態。不完全介質恢復的類型包括:基於撤銷、基於時間和基於修改的不完全恢復,它們決定於需要不完全介質恢復的情況。
①基於撤銷恢復。在某種情況下,不完全介質恢復必須被控制,DBA可撤銷在指定點的操作。基於撤銷的恢復地在一個或多個日誌組(在線上的或歸檔的)已被介質故障所破壞不能用於恢復過程時使用,所以介質恢復必須控制,以致在使用最近的、未損的日誌組於數據檔案後中止恢復操作。
②基於時間和基於修改的恢復。如果DBA希望恢復到過去的某個指定點,不完全介質恢復可成功完成。可在下列情況下使用:
①當用戶意外刪除一表,並注意到錯誤提交的估計時間,DBA可立即關閉資料庫,恢復它到用戶錯誤之前的時刻。
②由於系統故障,一個在線上日誌檔案的部分被破壞,所以活動的日誌檔案突然不可使用,實例被中止,此時需要介質恢復。在恢復中可使用當前在線上日誌檔案的未損部分,DBA利用基於時間的恢復,一旦將有效的在線上日誌已套用於數據檔案後停止恢復過程。
在這兩種情況下,不完全介質恢復的終點可由時間點或系統修改號(SCN)來指定。
故障種類
事務故障
事務故障是指某個事務在運行過程中由於種種原因未能運行至終止點( COMMIT或ROLLBACK),發生故障。
事務故障的常見原因包括輸入數據有誤、運算溢出、違反了完整性限制、應用程式出錯、並行事務發生死鎖等。
發生事務故障時,未完成的事務可能把對資料庫的部分修改已寫回物理資料庫,此時的資料庫可能處於不正確的狀態,恢復程式要在不影響其他事務運行的情況下,強行回滾(ROLLBACK)該事務,清除該事務對資料庫的所有修改,使得這個事務好像根本沒有運行過一樣。
系統故障
系統故障是指作業系統或DBMS代碼錯誤、特定類型的硬體錯誤(如CPU故障)或突然停電等原因,使得系統要重新啟動。發生系統故障時,所有正在運行的事務都非正常終止,記憶體中資料庫緩衝區的信息全部丟失,但外部存儲設備上的數據未受影響。
一方面,發生系統故障時,一些尚未完成的事務的結果可能已被寫人物理資料庫,從而造成資料庫可能處於不正確的狀態。為保證數據一致性,需要清除這些事務對資料庫的所有修改。恢復子系統必須在系統重新啟動時讓所有非正常終止的事務回滾,強行撤銷(UNDO)所有未完成的事務。
另一方面,發生系統故障時,有些已完成事務的結果可能有一部分甚至全部留在緩衝區中,尚未寫入磁碟上的物理資料庫,系統故障使得這些事務對資料庫的修改部分或全部丟失,這也會使資料庫處於不一致狀態,因此應將這些事務已提交的結果重新寫入資料庫。恢復子系統必須在系統重新啟動時重做( REDO)所有已提交的事務,以將資料庫恢復到一致狀態。
介質故障
系統故障稱為“軟故障”(SoftCrash)。介質故障稱為“硬故障”(HardCrash)。介質故障是指由於磁碟損壞、磁頭碰撞、瞬時強磁場干擾等原因,使得存儲在外存中的數據部分丟失或全部丟失。
介質故障比前兩類故障的可能性小得多,但破壞性大得多。關鍵概念:事務故障和系統故障不會破壞外存中資料庫的數據,介質故障會破壞存放在外存的資料庫中的部分或全部數據。
總結各類故障,對資料庫的影響有兩種可能性:一是資料庫本身被破壞;二是資料庫沒有被破壞,但數據可能不正確。
計算機病毒
計算機病毒是一種人為的故障和破壞,是一些惡作劇者研製的一種電腦程式,可以繁殖和傳播,並造成對計算機系統包括資料庫的危害。這類故障,輕則使部分數據不正確,重則使整個資料庫遭到破壞。
故障恢復手段
資料庫系統中的恢復機制主要指恢複數據庫本身,即在故障引起資料庫當前狀態不一致後將資料庫恢復到某個正確狀態或一致性狀態。
故障恢復的原理很簡單,就是預先在資料庫系統外,備份正確狀態時的資料庫影像數據,當發生故障時,再根據這些影像數據來重建資料庫。恢復機制要做兩件事情:第一,建立冗餘數據;第二,根據冗餘數據恢複數據庫。故障恢復的原理雖然簡單,但實現技術相當複雜。
建立冗餘數據的常用方法是資料庫轉儲法和日誌檔案法。
1.資料庫轉儲法
由DBA(資料庫管理員)定期地把整個資料庫複製到磁帶、另一個磁碟或光碟上保存起來,作為資料庫的後備副本(也稱後援副本),稱為資料庫轉儲法。
資料庫發生破壞時,可把後備副本重新裝入以恢複數據庫。但重裝副本只能恢復到轉儲時的狀態。自轉儲以後的所有更新事務必須重新運行,才能使資料庫恢復到故障發生前的一致狀態。
由於轉儲的代價很大,因此必須根據實際情況確定一個合適的轉儲周期。
轉儲分為靜態轉儲和動態轉儲兩類。
1)靜態轉儲
在系統中沒有事務運行的情況下進行轉儲稱為靜態轉儲。這可保證得到一個一致性的資料庫副本,但在轉儲期間整個資料庫不能使用。
2)動態轉儲
允許事務並發執行的轉儲稱為動態轉儲。動態轉儲克服了靜態轉儲會降低資料庫可用性的缺點,但不能保證轉儲後的副本是正確有效的。例如,在轉儲中,把某一數據存儲到了副本,但在轉儲結束前,某一事務又把此數據修改了,這樣,後備副本上的數據就不正確了。
因此必須建立日誌檔案,把轉儲期間任何事務對資料庫的修改都記錄下來。以後,後備副本加上日誌檔案就可把資料庫恢復到前面動態轉儲結束時的資料庫狀態。
另外,轉儲還可以分為海量轉儲和增量轉儲。海量轉儲是指轉儲全部資料庫:增量轉儲是指只轉儲上次轉儲後更新過的數據。
資料庫中的數據一般只會部分更新。因此,採用增量轉儲可明顯減少轉儲的開銷。例如,每周做一次海量轉儲,每天做一次增量轉儲。也可每天做一次增量轉儲,當總的增量轉儲的內容達到一定量時,做一次海量轉儲。
2.日誌檔案法
前面已指出,重裝副本只能使資料庫恢復到轉儲時的狀態,必須接著重新運行自轉儲後的所有更新事務才能使資料庫恢復到故障發生前的一致狀態。日誌檔案法就是用來記錄所有更新事務的。
為保證資料庫是可恢復的,日誌檔案法必須遵循以下兩條原則:
(1)事務每一次對資料庫的更新都必須寫入日誌檔案。一次更新在日誌檔案中有一條記載更新工作的記錄。
(2)必須先把日誌記錄寫到日誌檔案中,再執行更新操作,即日誌先寫原則。
曰志檔案有三類記錄:
(1)每個事務開始時,必須在日誌檔案中登記一條該事務的開始記錄;
(2)每個事務結束時,必須在日誌檔案中登記一條結束該事務的記錄(註明為(COMMIT或ROLLBACK);
(3)任一事務的任一次對資料庫的更新,都必須在日誌檔案中登入一條記錄,其格式為
(<事務標識>,<操作類型>,<更新前數據舊值>,<更新後數據的新值>)其中,<操作類型>有插入、刪除和修改三種類型。