top
Loading...
從頭談起:數據庫基礎知識快速充電

章1 介紹數據庫的恢復

1.1 數據庫的恢復

當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的,但由于計算機系統的故障(硬件故障、軟件故障、網絡故障、進程故障和系統故障)影響數據庫系統的操作,影響數據庫中數據的正確性,甚至破壞數據庫,使數據庫中全部或部分數據丟失。因此當發生上述故障后,希望能重構這個完整的數據庫,該處理稱為數據庫恢復。恢復過程大致可以分為復原與恢復過程。

章2 數據庫恢復的基本方法

2.1 實例故障的一致性恢復

當實例意外地(如掉電、后臺進程故障等)或預料地(發出SHUTDOUM ABORT語句)中止時出現實例故障,此時需要實例恢復。實例恢復將數據庫恢復到故障之前的事務一致狀態。如果在在線后被發現實例故障,則需介質恢復。在其它情況Oracle在下次數據庫起動時(對新實例裝配和打開),自動地執行實例恢復。

2.2 介質故障或文件錯誤的不一致恢復

1介質故障是當一個文件、一個文件的部分或磁盤不能讀或不能寫時出現的故障。文件錯誤一般指意外的錯誤導致文件被刪除或意外事故導致文件的不一致。這種狀態下的數據庫都是不一致的,需要DBA手工來進行數據庫的恢復。

2.3 了解與恢復相關的信息

2.3.1 理解報警日志文件

報警日志文件一般記載了數據庫的啟動/關閉信息,歸檔信息,備份信息,恢復信息,常見錯誤信息,部分數據庫修改記錄等。一般令名規則為Alrt.log或Alrt.log。

報警日志文件的路徑是根據初始化參數background_dump_dest來決定的。

2.3.2 后臺進程跟蹤文件

后臺進程跟蹤文件的路徑與報警日志文件的路徑一致,在某些情況下,你可以通過后臺跟蹤文件的信息了解更多的需要恢復的信息。

2.3.3 v$recover_file與v$recovery_log

這是兩個動態性能視圖,可以在mount下查看,通過這兩個視圖,你可以了解詳細的需要恢復的數據文件與需要使用到的歸檔日志。

2.4 損壞聯機日志的恢復方法

2.4.1 損壞非當前聯機日志

大家都清楚,聯機日志分為當前聯機日志和非當前聯機日志,非當前聯機日志的損壞是比較簡單的,一般通過clear命令就可以解決問題 。

2.4.2 損壞當前聯機日志

歸檔模式下當前日志的損壞有兩種情況:

是數據庫是正常關閉,日志文件中沒有未決的事務需要實例恢復,當前日志組的損壞就可以直接用alter database clear unarchived logfile group n來重建。

是日志組中有活動的事務,數據庫需要媒體恢復,日志組需要用來同步,有兩種補救辦法:

最好的辦法就是通過不完全恢復,可以保證數據庫的一致性,但是這種辦法要求在歸檔方式下,并且有可用的備份。

通過強制性恢復,但是可能導致數據庫不一致。

2.5 損壞控制文件的恢復方法

2.5.1 損壞單個控制文件

損壞單個控制文件是比較容易恢復的,因為一般的數據庫系統,控制文件都不是一個,而且所有的控制文件都互為鏡相,只要拷貝一個好的控制文件替換壞的控制文件就可以了。

說明:

損失單個控制文件是比較簡單的,因為數據庫中所有的控制文件都是鏡相的,只需要簡單的拷貝一個好的就可以了。

建議鏡相控制文件在不同的磁盤上。

建議多做控制文件的備份,長期保留一份由alter database backup control file to trace產生的控制文件的文本備份。

2.5.2 損壞全部控制文件

1損壞多個控制文件,或者人為的刪除了所有的控制文件,通過控制文件的復制已經不能解決問題,這個時候需要重新建立控制文件。

1同時注意,alter database backup control file to trace可以產生一個控制文件的文本備份。

說明:

重建控制文件用于恢復全部數據文件的損壞,需要注意其書寫的正確性,保證包含了所有的數據文件與聯機日志。

(T114)

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗