由淺入深講解Oracle數據庫的備份與恢複

備份的概念

所謂備份,就是把數據庫複制到轉儲設備的過程。其中,轉儲設備是指用于放置數據庫拷貝的磁帶或磁盤。通常也將存放于轉儲設備中的數據庫的拷貝稱爲原數據庫的備份或轉儲。如下圖所示:

由淺入深講解Oracle數據庫的備份與恢複

Oracle數據庫的備份分爲物理備份和邏輯備份兩種。物理備份是將實際組成數據庫的操作系統文件從一處拷貝到另一處的備份過程,通常是從磁盤到磁帶。可以使用 Oracle 的恢複管理器(Recovery Manager,RMAN)或操作系統命令進行數據庫的物理備份。邏輯備份是利用SQL語言從數據庫中抽取數據並存于二進制文件的過程。Oracle提供的邏輯備份工具是 EXP。數據庫邏輯備份是物理備份的補充。

根據在物理備份時數據庫的狀態,可以將備份分爲一致性備份(consistent backup)和不一致性備份(inconsistent backup)兩種:

一致性備份:一致性備份是當數據庫的所有可讀寫的數據庫文件和控制文件具有相同的系統改變號(SCN),並且數據文件不包含當前 SCN 之外的任何改變。在做數據庫檢查點時,Oracle 使所有的控制文件和數據文件一致。對于只讀表空間和脫機的表空間,Oracle 也認爲它們是一致的。使數據庫處于一致狀態的唯一方法是數據庫正常關閉(用shutdown normal 或 shutdown immediate 命令關閉)。因此,只有在以下條件下的備份是一致性備份:

數據庫正常關閉(用shutdown normal 或 shutdown immediate 命令關閉)。

不一致性備份:不一致備份是當數據庫的可讀寫的數據庫文件和控制文件的系統改變號(SCN)在不一致條件下的備份。對于一個 7*24 工作的數據庫來說,由于不可能關機,而數據庫數據是不斷改變的,因此只能進行不一致備份。在 SCN 號不一致的條件下,數據庫必須通過應用重做日志使 SCN 一致的情況下才能啓動。因此,如果進行不一致備份,數據庫必須設爲歸檔狀態,並對重做日志歸檔才有意義。在以下條件下的備份是不一致性備份:

數據庫處于打開狀態。

數據庫處于關閉狀態,但是用非正常手段關閉的。例如,數據庫是通過 shutdown abort 或機器掉電等等方法關閉的。

恢複的概念

所謂恢複,就是把數據庫由存在故障的狀態轉變爲無故障狀態的過程。根據出現故障的原因,恢複分爲兩種類型:

實例恢複。這種恢複是Oracle實例出現失敗後,Oracle自動進行的恢複。

介質恢複。這種恢複是當存放數據庫的介質出現故障時所做的恢複。本書後面提到的恢複都是指介質恢複。

裝載(restore)物理備份與恢複(Recover)物理備份是介質恢複的手段。裝載是將備份考回到磁盤,恢複是利用重做日志(物理備份的一部分)修改考回到磁盤的數據文件(物理備份的另一部分),從而恢複數據庫的過程。如下圖所示:

由淺入深講解Oracle數據庫的備份與恢複

根據數據庫的恢複程度,將恢複方法分爲兩種類型:

完全恢複:將數據庫恢複到數據庫失敗時數據庫的狀態。這種恢複是通過裝載數據庫備份和並應用全部的重做日志做到的。

不完全恢複:將數據庫恢複到數據庫失敗前的某一時刻數據庫的狀態。這種恢複是通過裝載數據庫備份和並應用部分的重做日志做到的。進行不完全恢複後必須在啓動數據庫時用 resetlogs 選項重設聯機重做日志。

例如,在上午10:00,由于磁盤損壞導致數據庫中止使用。現在使用兩種方法進行數據庫的恢複,第一種方法使數據庫可以正常使用,且使恢複後與損壞時(10:00)數據庫中的數據相同,那麽第一種恢複方法就屬于完全恢複類型;第二種方法能使數據庫正常使用,但只能使恢複後與損壞前(例如9:00)數據庫中的數據相同,沒能恢複數據庫到失敗時(10:00)數據庫的狀態,那麽第二種恢複方法就屬于不完全恢複類型。

事實上,如果數據庫備份是一致性的備份,則裝載後的數據庫即可使用,從而也可以不用重做日志恢複到數據庫備份時的點。這也是一種不完全恢複。

由淺入深講解Oracle數據庫的備份與恢複

備份與恢複的關系

備份一個Oracle數據庫,類似于買醫療保險——在遇到疾病之前不會意識到它的重要性,獲得保險金的數量取決于保險單的種類。同理,隨著制作備份的種類和頻繁程度的不同,數據庫發生故障後其恢複的可行性、難度與所花費的時間也不同。

數據庫故障是指數據庫運行過程中影響數據庫正常使用的特殊事件。數據庫故障有許多類型,最嚴重的是介質失敗(如磁盤損壞),這種故障如不能恢複將導致數據庫中數據的丟失。數據庫故障類型有:

語句失敗。

用戶進程失敗。

實例失敗。

用戶或應用錯誤操作。這類錯誤可能是意外地刪除了表中的數據等錯誤操作。

介質失敗。如硬盤失敗,硬盤中的數據丟失。

自然災害。如地震、洪水等。

由于故障類型的不同,恢複數據庫的方法也不同。通過裝載備份來恢複數據庫既是常用的恢複手段,也是恢複介質失敗故障的主要方法。

備份與恢複要考慮的問題

備份與恢複要考慮以下的三個問題:

備份與恢複策略要考慮的商業、操作、及技術問題;

災難恢複計劃的組成;

測試備份與恢複策略的重要性。

能夠進行什麽樣的恢複依賴于有什麽樣的備份。作爲 DBA,有責任從以下三個方面維護數據庫的可恢複性:

使數據庫的失效次數減到最少,從而使數據庫保持最大的可用性;

當數據庫不可避免地失效後,要使恢複時間減到最少,從而使恢複的效率達到最高;

當數據庫失效後,要確保盡量少的數據丟失或根本不丟失,從而使數據具有最大的可恢複性。

備份與恢複策略要考慮的商業、操作、及技術問題

作爲 DBA,首先需要了解企業是如何使用數據庫系統的,以及企業對數據庫的可用性,恢複性能,和數據的可恢複性以及恢複時間的要求。然後,DBA 需要使企業的管理人員了解維護這樣的數據庫的可用性的代價有多大。做到這點的最好方法是評估恢複需要的花費,以及丟失數據給企業帶來的損失。

在代價被評估後,就可以進行備份與恢複的討論了。此時,要定義數據庫總體的可用性需求,並根據各項工作對數據庫可用性的影響程度來定義工作重點的次序。例如,如果數據庫需要 7*24 的可用性,那麽其重要性就高于其它任何工作,其它任何需要關機才能做的工作就不能做。

另外,數據庫變化的情況也是備份與恢複策略需要考慮的一個因素。例如,如果數據不斷改變,有新數據或數據文件加入,或表結構有大的變化,則應該經常備份;反之,如果數據是靜態的或只讀的,則備份一次即可。無論如何,應遵從這樣一個原則,如果懷疑數據庫的可恢複性,就應該備份。

災難恢複計劃的組成

針對災難恢複,必須回答下述問題:

系統可能出現什麽樣的災難恢複情況?

如果出現數據丟失,災難恢複情況是怎樣的?

系統中數據的易變程度如何?

如果出現問題,系統需要多快的速度恢複?

在各種情況下恢複策略的代價,以及相應的花時間重新錄入數據的代價?

對這些問題的回答組成了災難恢複計劃。

計算機是易壞的。主板上的芯片、主板電路、內存、電源等任何一項不能正常工作,都會導致計算機系統不能正常工作。當然,這些損壞可以修複,不會導致應用和數據的損壞。但是,如果計算機的硬盤損壞,將會導致數據丟失,此時必須用備份恢複數據。

災難恢複的最重要步驟是設計充足頻率的硬盤備份過程。備份過程應該滿足系統要求的可恢複性。例如,如果數據庫可有較長的關機時間,則可以每周進行一次冷備份,並歸檔重做日志;但是,如果數據庫只有極少的關機時間,則只能從硬件的角度來考慮備份與恢複的問題,例如使用硬盤鏡像或雙機系統。選擇備份策略的依據是:丟是數據的代價與確保數據不丟失的代價之比。

果每天都能備份當然會很理想,但要考慮其現實性。企業都在想辦法降低維護成本,現實的方案才可能被采用。只要仔細計劃,並想辦法達到數據庫可用性的底線,花少量的錢進行成功的備份與恢複也是可能的。

DBA 還應以服務協議的形式制訂一個可恢複性與可用性的標准文件。該文件應成爲討論DBA 服務,以及服務是否能達到預期標准的依據。這樣做可使所有相關人員對同樣的預期有潛在的危機感。

測試備份與恢複策略的重要性

備份與恢複策略必須經測試無誤後才可使用。如果進行了備份,但不知道該備份是否支持希望的恢複目標則與根本沒有備份沒有兩樣。

恢複策略也要考慮慮對環境的依賴性。例如,假如機器的硬盤失效了,供貨商能在多長時間內提供一個新的硬盤;在機器需要重新啓動時,能找到操作系統管理員嗎?

另外一個需要考慮的問題是數據庫是否能經受自然的破壞。應在與計算機不同的地方再存儲一份備份介質,以免出現自然災害時主機與備份一起遭到破壞。

最後需要考慮的問題是萬一DBA 出現了問題怎麽辦?後備的DBA能否執行備份策略?他或她能找到支持用的文檔嗎?這些文檔存在嗎?

沒有比花了大精力指定了好的計劃,但沒有測試其有效性而使其付諸東流的了。一個好的計劃還應容納人爲錯誤,特別是用于開發的系統。理想的測試計劃應包括以下內容:

一系列的測試例子及其狀態描述;

測試結果是否成功的標准;

解決這些狀態的步驟。

只有在上述情況測試成功的前提下,DBA 才應該考慮把備份計劃付諸實施,用于實際使用的生産系統。

在數據庫實際使用時,備份策略的測試也不能終止。小範圍的測試可以確保備份策略可以滿足未來的需求。隨著應用系統的成熟,備份策略也應相應地成熟。如果備份策略不能滿足新的需求,就應該重新設計。

測試備份策略的益處:

測試人工的備份過程可能會發現人工的疏漏,促使DBA考慮自動的備份方法。只要自動的備份過程經過了測試,並能解決數據庫改變後的(例如增加了表空間)的備份問題,自動備份是有益無害的。

測試的另外一個好處是可以發現數據塊的問題。如果數據文件的一個或多個數據塊損壞了,而又使用了數據庫的物理備份方法,則損壞了的數據塊會被拷貝到備份文件中,這會導致備份的損壞和數據庫的損壞。如果不做測試,該問題是不會被發現的。當然,也可以通過設置INIT.ORA 文件中的參數DB_BLOCK_CHECKSUM 或用DBVERIFY 實用工具進行數據的完整性檢查。

Oracle數據庫的備份及恢複策略研究
  隨著信息系統在各種商務活動中重要性的不斷增強,維護系統數據的可用性已成爲當前一個十分重要的課題。爲了有效地保持健康的信息系統,必須采取一定的措施防止在由介質、操作系統、軟件和其它事件導致重要數據庫...查看完整版>>Oracle數據庫的備份及恢複策略研究
 
Oracle數據庫的備份及恢複策略研究
     摘 要 恢複丟失的數據庫文件在很大程度上取決于所采用的備份策略。本文從恢複的靈活性出發,對Oracle8數據庫的備份及恢複策略進行了探討,並給出了Windows 2000環境下使備份過程自動化的腳本文件的項目開發...查看完整版>>Oracle數據庫的備份及恢複策略研究
 
Oracle數據庫的備份與恢複
  ---- 當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的,但由于計算機系統的故障(包括機器故障、介質故障、誤操作等),數據庫有時也可能遭到破壞,這時如何盡快恢複數據就成爲當務之急。如果平時對...查看完整版>>Oracle數據庫的備份與恢複
 
Oracle數據庫的備份與恢複
  河南省新鄉市電信局  靳雲旭  ---- 當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的,但由于計算機系統的故障(包括機器故障、介質故障、誤操作等),數據庫有時也可能遭到破壞,這時如何盡快恢...查看完整版>>Oracle數據庫的備份與恢複
 
Oracle 數據庫的備份與恢複
  Oracle數據庫有三種標准的備份方法,它們分別是導出/導入(EXP/IMP)、熱備份和冷備份。導出備件是一種邏輯備份,冷備份和熱備份是物理備份。  一、 導出/導入(Export/Import)   利用Export可將數據從數...查看完整版>>Oracle 數據庫的備份與恢複
 
Oracle 數據庫的備份與恢複[整理]
Oracle數據庫有三種標准的備份方法,分別是:1.導出/導入(EXP/IMP)2.熱備份3.冷備份(注意導出備件是一種邏輯備份,冷備份和熱備份是物理備份) 一、 導出/導入(Export/Import)   利用Export可將數據從數據庫...查看完整版>>Oracle 數據庫的備份與恢複[整理]
 
Oracle 數據庫的備份與恢複
Oracle數據庫有三種標准的備份方法,它們分別是導出/導入(EXP/IMP)、熱備份和冷備份。導出備件是一種邏輯備份,冷備份和熱備份是物理備份。 一、 導出/導入(Export/Import) 利用Export可將數據從數據庫中提取...查看完整版>>Oracle 數據庫的備份與恢複
 
Oracle數據庫的備份與恢複
Oracle數據庫的備份與恢複 ---- 當我們使用一個數據庫時,總希望數據庫的內容是可靠的、正確的,但由于計算機系統的故障(包括機器故障、介質故障、誤操作等),數據庫有時也可能遭到破壞,這時如何盡快恢複數據就成...查看完整版>>Oracle數據庫的備份與恢複
 
Oracle 的數據庫的數據備份與恢複
摘要:任何數據庫在長期使用過程中,都會存在一定的安全隱患。對于數據庫治理員來說不能僅寄希望于計算機操作系統的安全運行,而是要建立一整套的數據庫備份與恢複機制。當任何人爲的或是自然的災難一旦出現,而導致...查看完整版>>Oracle 的數據庫的數據備份與恢複
 
 
回到王朝網路移動版首頁