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