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