淺談ORACLE數據庫中的備份與恢復

來源:果殼範文吧 1.96W

備份與恢復是我們使用數據庫中不可缺少的部分,也是我們在使用數據庫時會經常碰到的問題,當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的,但由於計算機系統的故障(硬件故障、軟件故障、網絡故障、進程故障和系統故障)影響數據庫系統的操作,影響數據庫中數據的正確性,甚至破壞數據庫,使數據庫中全部或部分數據丟失。因此當發生上述故障後,希望能重新建立一個完整的數據庫,該處理稱為數據庫恢復。恢復子系統是數據庫管理系統的一個重要組成部分。恢復處理隨所發生的故障類型所影響的結構而變化。

淺談ORACLE數據庫中的備份與恢復

1.恢復數據庫所使用的結構

ORACLE數據庫使用幾種結構對可能故障來保護數據:數據庫後備、日誌、回滾段和控制文件。

數據庫後備是由構成Oracle數據庫的物理文件的操作系統後備所組成。當介質故障時進行數據庫恢復,利用後備文件恢復毀壞的數據文件或控制文件。

日誌,每一個Oracle數據庫實例都提供,記錄數據庫中所作的全部修改。一個實例的日誌至少由兩個日誌文件組成,當實例故障或介質故障時進行數據庫部分恢復,利用數據庫日誌中的改變應用於數據文件,修改數據庫數據到故障出現的時刻。數據庫日誌由兩部分組成:在線日誌和歸檔日誌。

每一個運行的Oracle數據庫實例相應地有一個在線日誌,它與Oracle後台進程LGWR一起工作,立即記錄該實例所作的全部修改。在線日誌由兩個或多個預期分配的文件組成,以循環方式使用。

歸檔日誌是可選擇的,一個Oracle數據庫實例一旦在線日誌填滿後,可形成在線日誌的歸檔文件。歸檔的在線日誌文件被唯一標識併合成歸檔日誌。

回滾段用於存儲正在進行的事務(為未提交的事務)所修改值的老值,該信息在數據庫恢復過程中用於撤消任何非提交的修改。

控制文件,一般用於存儲數據庫的物理結構的狀態。控制文件中某些狀態信息在實例恢復和介質恢復期間用於引導Oracle。

2.在線日誌

一個Oracle數據庫的'每一實例有一個相關聯的在線日誌。一個在線日誌由多個在線日誌文件組成。在線日誌文件填入日誌項,日誌項記錄的數據用於重構對數據庫所作的全部修改。後台進程LGWR以循環方式寫入在線日誌文件。噹噹前的在線日誌文件寫滿後,LGWR寫入到下一可用在線日誌文件當最後一個可用的在線日誌文件的檢查點已完成時即可使用。如果歸檔不實施,一個已填滿的在線日誌文件一當包含該在線日誌文件的檢查點完成,該文件已被歸檔後即可使用。在任何時候,僅有一個在線日誌文件被寫入存儲日誌項,它被稱為活動的或當前在線日誌文件,其它的在線日誌文件為不活動的在線日誌文件。

Oracle結束寫入一在線日誌文件並開始寫入到另一個在線日誌文件的點稱為日誌開關。日誌開關在當前在線日誌文件完全填滿,必須繼續寫入到下一個在線日誌文件時總出現,也可由DBA強制日誌開關。每一日誌開關出現時,每一在線日誌文件賦給一個新的日誌序列號。如果在線日誌文件被歸檔,在歸檔日誌文件中包含有它的日誌序列號。

檢查點機制:當檢查點出現時,檢查點後台進程記住寫入在線文件的下一日誌行的位置,並通知數據庫寫後台進程將SGA中修改的數據庫緩衝區寫入到磁盤上的數據文件。然後由CKPT修改全部控制文件和數據文件的標頭,反映該最後檢查點。當檢查點不發生,DBWR當需要時僅將最近最少使用的數據庫緩衝區寫入磁盤,為新數據準備緩衝區。

3.歸檔日誌

Oracle要將填滿的在線日誌文件組歸檔時,則要建立歸檔日誌,或稱離線日誌。其對數據庫後備和恢復有下列用處:

數據庫後備以及在線和歸檔日誌文件,在操作系統或磁盤故障中可保證全部提交的事務可被恢復。

在數據庫打開時和正常系統使用下,如果歸檔日誌是永久保持,在線後備可以進行和使用。

如果用户數據庫要求在任何磁盤故障的事件中不丟失任何數據,那麼歸檔日誌必須要存在。歸檔已填滿的在線日誌文件可能需要DBA執行額外的管理操作。

歸檔機制:決定於歸檔設置,歸檔已填滿的在線日誌組的機制可由Oracle後台進程ARCH自動歸檔或由用户進程發出語句手工地歸檔。當日志組變為不活動、日誌開關指向下一組已完成時,ARCH可歸檔一組,可存取該組的任何或全部成員,完成歸檔組。在線日誌文件歸檔之後才可為LGWR重用。當使用歸檔時,必須指定歸檔目標指向一存儲設備,它不同於個有數據文件、在線日誌文件和控制文件的設備,理想的是將歸檔日誌文件永久地移到離線存儲設備、如磁帶。

數據庫可運行在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式。數據庫在NOARCHIVELOG方式下使用時,不能進行在線日誌的歸檔。在該數據庫控制文件指明填滿的組不需要歸檔,所以一當填滿的組成為活動,在日誌開關的檢查點完成,該組即可被LGWR重用。在該方式下僅能保護數據庫實例故障,不能保護介質(磁盤)故障。利用存儲在在線日誌中的信息,可實現實例故障恢復。

4.數據庫後備

不管為ORACLE數據庫設計成什麼樣的後備或恢復模式,數據庫數據文件、日誌文件和控制文件的操作系統後備是絕對需要的,它是保護介質故障的策略部分。操作系統後備有完全後備和部分後備

完全後備:一個完全後備將構成ORACLE數據庫的全部數據庫文件、在線日誌文件和控制文件的一個操作系統後備。一個完全後備在數據庫正常關閉之後進行,不能在實例故障後進行。在此時,所有構成數據庫的全部文件是關閉的,並與當前點相一致。在數據庫打開時不能進行完全後備。由完全後備得到的數據文件在任何類型的介質恢復模式中是有用的。

部分後備

部分後備為除完全後備外的任何操作系統後備,可在數據庫打開或關閉下進行。如單個表空間中全部數據文件後備、單個數據文件後備和控制文件後備。部分後備僅對在ARCHIVELOG方式下運行數據庫有用,因為存在的歸檔日誌,數據文件可由部分後備恢復。在恢復過程中與數據庫其它部分一致。

5.數據庫恢復

實例故障的恢復

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

(1)為了解恢復數據文件中沒有記錄的數據,進行向前滾。該數據記錄在在線日誌,包括對回滾段的內容恢復。

(2)回滾未提交的事務,按步1重新生成回滾段所指定的操作。

(3)釋放在故障時正在處理事務所持有的資源。

(4)解決在故障時正經歷一階段提交的任何懸而未決的分佈事務。

熱門標籤