備份的目的在於,當系統或數據庫出現問題時,能夠快速將數據庫進行恢復。對於Oracle數據庫,一般有兩種備份方式: “物理備份”和“邏輯備份”。“物理備份”指的是以copy數據文件方式進行備份;“邏輯備份”指的是用export等方式將數據從數據庫中抽取出來。物理備份又可以分為冷備份和熱備份。以下是各種備份的說明及前提條件。
◆Cold Backup(冷備份) 主要指在關閉數據庫的狀態下進行的數據庫完全備份,備份內容包括所有數據文件、控制文件、聯機日志文件、ini文件。
◆Hot Backup(熱備份) 指在數據庫處於運行狀態下,對數據文件和控制文件進行備份,要使用熱備份必須將數據庫運行在(Archive Log)歸檔方式下。
◆Export(邏輯備份)這是最簡單的備份方法,可按數據庫中某個表、某個用戶或整個數據庫來導出,並且支持全部、累計、增量三種方式。使用這種方法,數據庫必須處於打開狀態,而且如果數據庫不是在restrict狀態將不能保證導出數據的一致性。
“物理備份”方式以相當於copy數據文件的方式進行備份,恢復時可以快速以相當於copy的方式將備份的數據copy回來,所以備份速度特別是恢復速度非常快。
如果不采用Oracle Archive Log模式,只有兩種可用的備份方法:冷備份或export邏輯備份。根據關鍵業務服務器的特點,停下數據庫進行冷備份是根本不可能的,因此如果不采用Archive Log,只能進行邏輯備份。
如果僅采用“邏輯備份”方式,恢復時會有以下兩個主要問題:
1. 無法恢復到最近時間點的數據。只能恢復到上一次export時的數據狀態,當天的數據將丟失。Oracle Archive Log模式下的物理備份可以用數據文件備份及Archive Log備份,將數據庫恢復到數據庫失敗前的時間點,不會丟失數據。
2. 完成恢復可能需要很長時間。恢復只能用import方法進行,所以需要的時間包括:
a. create database及所有的tablespace: 以每2分鐘初始化一個2G的數據文件來計算,建立一個400G的Oracle數據庫需要約6.7個小時。
b. import。時間較難確定,但保守估計應在10個小時以上(如果import過程中出現問題,恢復時間將延長)
3. 恢復時步驟較多,易出現人為故障。
由於 這些原因,一般備份/恢復時都把export/import的方式做為輔助備份/恢復方式,對一些重要的表進行二級保護。這種備份方式也稱為“邏輯備份”方式,當某些重要的表被意外刪除時可進行邏輯import恢復。
而對於整個數據庫的日常備份/恢復,需要采用“物理備份”方式,即以相當於copy數據文件的方式進行備份,恢復時可以快速以相當於copy的方式將備份的數據copy回來。一般物理備份/恢復都采用Oracle RMAN工具來進行。
下面是“邏輯備份”與“物理備份”在數據庫故障時的恢復比較:
1. Oracle邏輯錯誤造成無法啟動
邏輯恢復: 重新create database及各tablespace,import。可恢復到上次export的數據
物理恢復: 將所有datafile copy回來,並利用Archive Log將數據庫recover到故障前的狀態
2. 某一個datafile故障或丟失
邏輯恢復: 重新create database及各tablespace,import。可恢復到上次export的數據
物理恢復: 將該datafile copy回來
3. 某一個tablespace故障
邏輯恢復: 重新create database及各tablespace,import。可恢復到上次export的數據
物理恢復: 將該tablespace copy回來
4. 意外drop table
邏輯恢復: Import 該table
物理恢復: 將備份恢復到另一服務器上,export該table,在原數據庫中import
5. 意外drop user
邏輯恢復: Import 該user
物理恢復: 將備份恢復到另一服務器上,export該user,在原數據庫中import
6. 意外drop tablespace
邏輯恢復: 情況較復雜,恢復易造成數據庫表之間的參照完整性被破壞。在此不做分析
物理恢復: 情況較復雜,恢復易造成數據庫表之間的參照完整性被破壞。在此不做分析
在進行數據庫的恢復時,一定要了解Oracle Archive Log模式的原理,分析故障的原因,然後針對故障的情況進行相應的恢復。例如以下情況:
◆Oracle程序文件損壞?
◆control file損壞?
◆Online redo log損壞?
◆datafile損壞?
◆archive log損壞?
◆table或其中數據被意外刪除?