-
介質故障
鎖定
- 中文名
- 介質故障
- 別 名
- 硬故障
- 概 述
- 指外存故障,如磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。
- 介質恢復
- 完全介質恢復和不完全介質恢復。
- 影 響
- 介質故障會破壞存放在外存的數據庫中的部分或全部數據。
- 特 點
- 發生可能性小,破壞性大
介質故障情況簡介
系統故障常稱為軟故障,介質故障稱為硬故障。硬故障指外存故障,如磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。此類故障將破壞數據庫或部分數據庫,並影響正在存取這部分數據的所有事務。此類故障比前兩類故障發生的可能性小得多,但破壞性最大
[2]
。
介質故障是指由於各種原因引起的數據庫數據文件、控制文件或重做日誌文件的損壞,導致系統無法正常運行。例如,磁盤損壞導致文件系統被破壞。這就需要管理員提前做好數據庫的備份,否則將導致數據庫無法恢復
[3]
。
介質故障故障影響
介質故障稱為硬故障。硬故障指外存故障,如磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。此類故障將破壞數據庫或部分數據庫,並影響正在存取這部分數據的所有事務。此類故障比前兩類故障發生的可能性小得多,但破壞性最大
[2]
。
在上述3種故障中,事務故障和系統故障都不會破壞外存中數據庫的數據,而介質故障將破壞存放在外存的數據庫中的部分數據或全部數據。因此,事務故障和系統故障可以由系統自動恢復,而介質故障必須藉助數據庫管理員的幫助,由數據庫管理員和系統一起恢復
[2]
。
介質故障介質故障恢復
介質故障在所有的故障中,對數據庫系統造成的危害最大,磁盤上的物理數據和日誌文件被破壞,這是最嚴重的一種故障,發生介質故障後,數據庫的物理數據和日誌記錄將被破壞。要恢復介質故障,只能使用基於數據轉儲的數據恢復技術。恢復時,首先重裝數據庫,然後重做事務。具體步驟如下
[4]
:
(1)裝入最新的數據庫後備副本(離故障發生時刻最近的轉儲副本),使數據庫恢復到最近一次轉儲時的一致性狀態。對於動態轉儲的數據庫副本,還需同時裝入轉儲開始時刻的日誌文件副本,利用恢復系統故障的方法,才能將數據庫恢復到一致性狀態
[4]
。
(2)裝入相應的日誌文件副本(轉儲結束時刻的日誌文件副本),重做已完成的事務。即:首先掃描日誌文件,找出故障發生時已提交的事務的標識,將其記入重做隊列。然後正向掃描日誌文件,對重做隊列中的所有事務進行重做處理。即將日誌記錄中“更新後的值”寫人數據庫。這樣就可以將數據庫恢復至故障前某一時刻的一致狀態了
[4]
。
②如果數據庫可運行,且聯機日誌是被歸檔的,該介質故障的恢復是一個實際恢復過程,重構受損的數據庫恢復到介質故障前的一個指定事務一致狀態。不管哪種形式,介質故障的恢復總是將整個數據庫恢復到與故障之前的一個事務保持一致狀態。如果數據庫是在ARCHIⅣ VELOG方式運行,可有不同類型的介質恢復:完全介質恢復和不完全介質恢復
[5]
。
(1)完全介質恢復。
(2)不完全介質恢復
不完全介質恢復是在完全介質恢復不可能或不要求時進行的介質恢復。重構受損的數據庫,使其恢復到介質故障前或用户出錯之前的一個事務一致性狀態。不完全介質恢復的類型包括:基於撤銷、基於時間和基於修改的不完全恢復,它們決定於需要不完全介質恢復的情況
[5]
。
①基於撤銷恢復。在某種情況下,不完全介質恢復必須被控制,DBA可撤銷在指定點的操作。基於撤銷的恢復地在一個或多個日誌組(聯機的或歸檔的)已被介質故障所破壞不能用於恢復過程時使用,所以介質恢復必須控制,以致在使用最近的、未損的日誌組於數據文件後中止恢復操作
[5]
。
②由於系統故障,一個聯機日誌文件的部分被破壞,所以活動的日誌文件突然不可使用,實例被中止,此時需要介質恢復。在恢復中可使用當前聯機日誌文件的未損部分,DBA利用基於時間的恢復,一旦將有效的聯機日誌已應用於數據文件後停止恢復過程
[5]
。
介質故障故障種類
介質故障事務故障
發生事務故障時,未完成的事務可能把對數據庫的部分修改已寫回物理數據庫,此時的數據庫可能處於不正確的狀態,恢復程序要在不影響其他事務運行的情況下,強行回滾(ROLLBACK)該事務,清除該事務對數據庫的所有修改,使得這個事務好像根本沒有運行過一樣
[6]
。
介質故障系統故障
系統故障是指操作系統或DBMS代碼錯誤、特定類型的硬件錯誤(如CPU故障)或突然停電等原因,使得系統要重新啓動。發生系統故障時,所有正在運行的事務都非正常終止,內存中數據庫緩衝區的信息全部丟失,但外部存儲設備上的數據未受影響
[6]
。
一方面,發生系統故障時,一些尚未完成的事務的結果可能已被寫人物理數據庫,從而造成數據庫可能處於不正確的狀態。為保證數據一致性,需要清除這些事務對數據庫的所有修改。恢復子系統必須在系統重新啓動時讓所有非正常終止的事務回滾,強行撤銷(UNDO)所有未完成的事務
[6]
。
另一方面,發生系統故障時,有些已完成事務的結果可能有一部分甚至全部留在緩衝區中,尚未寫入磁盤上的物理數據庫,系統故障使得這些事務對數據庫的修改部分或全部丟失,這也會使數據庫處於不一致狀態,因此應將這些事務已提交的結果重新寫入數據庫。恢復子系統必須在系統重新啓動時重做( REDO)所有已提交的事務,以將數據庫恢復到一致狀態
[6]
。
介質故障介質故障
系統故障稱為“軟故障”(SoftCrash)。介質故障稱為“硬故障”(HardCrash)。介質故障是指由於磁盤損壞、磁頭碰撞、瞬時強磁場干擾等原因,使得存儲在外存中的數據部分丟失或全部丟失
[6]
。
介質故障故障恢復手段
故障恢復的原理很簡單,就是預先在數據庫系統外,備份正確狀態時的數據庫影像數據,當發生故障時,再根據這些影像數據來重建數據庫。恢復機制要做兩件事情:第一,建立冗餘數據;第二,根據冗餘數據恢復數據庫。故障恢復的原理雖然簡單,但實現技術相當複雜
[7]
。
1.數據庫轉儲法
數據庫發生破壞時,可把後備副本重新裝入以恢復數據庫。但重裝副本只能恢復到轉儲時的狀態。自轉儲以後的所有更新事務必須重新運行,才能使數據庫恢復到故障發生前的一致狀態。
1)靜態轉儲
2)動態轉儲
允許事務併發執行的轉儲稱為動態轉儲。動態轉儲克服了靜態轉儲會降低數據庫可用性的缺點,但不能保證轉儲後的副本是正確有效的。例如,在轉儲中,把某一數據存儲到了副本,但在轉儲結束前,某一事務又把此數據修改了,這樣,後備副本上的數據就不正確了
[7]
。
數據庫中的數據一般只會部分更新。因此,採用增量轉儲可明顯減少轉儲的開銷。例如,每週做一次海量轉儲,每天做一次增量轉儲。也可每天做一次增量轉儲,當總的增量轉儲的內容達到一定量時,做一次海量轉儲
[7]
。
2.日誌文件法
曰志文件有三類記錄:
(3)任一事務的任一次對數據庫的更新,都必須在日誌文件中登入一條記錄,其格式為
- 參考資料
-
- 1. 張錫英,李林輝,邊繼龍主編,數據庫系統原理 第2版,哈爾濱工業大學出版社,2016.03,第113頁
- 2. 趙曉峯主編;餘曉永,吳姜副主編,數據庫原理與運用基礎教程,對外經濟貿易大學出版社,2014.09,第63頁
- 3. 李明俊主編,ORACLE 11g數據庫與應用開發教程,哈爾濱工業大學出版社,2013.03,第288頁
- 4. 錢雪忠,王月海主編;陳國俊,徐華,錢瑛副主編,數據庫原理及應用 第4版,北京郵電大學出版社,2015.04,第181頁
- 5. 張錫英,李林輝,邊繼龍主編,數據庫系統原理 第2版,哈爾濱工業大學出版社,2016.03,第190頁
- 6. 胡學鋼總主編;葉明全,伍長榮主編;汪洋,潘潔珠,崔琳,殷雲霞,範慶春副主編,數據庫技術與應用(第2版),安徽大學出版社,2015.07,第127頁
- 7. 張紅娟,傅婷婷編著;郭盈發主審,數據庫原理 (第4版),西安電子科技大學出版社,2016.07,第235頁