1. 首頁
  2. 資料庫作業系統

淺談ORACLE資料庫中的備份與恢復

淺談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)解決在故障時正經歷一階段提交的任何懸而未決的分佈事務。