探索ORACLE之RMAN_05增量備份
作者:吳偉龍
在前幾次的博文中我提到了資料庫的一緻性備份和非一緻性備份,它們都屬于完全備份,對資料的備份,每次備份是備份所有塊,在今天我們就來談談增量備份,通過增量備份可以有效的節省存儲空間及備份的所需的時間。
什麼是增量備份,增量備份分為兩種,分别為差異增量(Differential Backup)備份與累計增量(CumulativeBackup)備份。使用RMAN建立備份集的時,預設是備份資料檔案的所有資料塊,這種備份也稱之為完全備份,而增量備份隻備份上次備份以來變化的資料塊。可以通過RMAN的增量備份來實作資料檔案,表空間,資料庫的備份,同時使備份檔案達到最小。
注意:在Oracle10g之前,差異增量備份和累積增量備份都包括0、1、2、3、4、5共五個備份級别,但在Oracle
10g中隻有0、1兩個級别,其中0級相當于完全備份。
2、差異增量備份:
差異增量備份級别1備份最近一次增量備份(差異增量備份和累計增量備份)變化的資料塊。如果要進行級别1差異增量備份,RMAN備份在執行最後一個級别1的增量備份後所變化的資料塊;如果之前沒有執行過級别1的備份,就備份自執行級别0以後變化的資料塊;如果也沒有執行過級别0的備份,Rman就複制自檔案建立以來變化的所有資料塊,否則執行一個級别0的備份。差異增量備份見(圖一)所示。
周日執行一個級别為0的增量備份,周一和周六執行級别為1的差異增量備份,即指備份自上一個備份以來變化的資料塊。
(圖一)
3、累積增量備份:
累計增量備份是指備份自最近的級别0備份以來所變化的資料塊。累積增量備份能減少恢複時間。累計增量備份的示意圖如(圖二)所示。
(圖二)
圖二中,周日對資料庫執行了級别為0的備份。周一到周六執行級别為1的累積增量備份。從圖中的箭頭可以看出,累計增量備份是備份級0以來的資料塊被修改的資料。累計增量備份增加了備份時間,但是因為恢複的時候,需要從更少的備份集中恢複資料,是以累計增量備份将比差異增量備份更節省時間。
2、如何建立增量備份
在Oracle 9i中,隻要是增量備份,都需要對比資料庫中的所有資料塊。這個過程很費時間,而且由于增量備份形成多個不通的備份集,使得恢複變得更加不可靠速度也更慢。一般情況下不是很使用,但是對大型的資料倉庫系統還是非常不錯的,OLTP系統一般沒有必要在9i資料庫上選擇增量備份。
但是到了Oracle 10g的時候增量備份有了很大的改進。實作了增量備份成真正意義上的備份。通過特有的增量日志,使得RMAN沒有必要去比較資料塊中的每個資料塊。但代價是會增加磁盤的I/O。另外,Oracle
10g通過備份的合并,使增量備份的結果可以合并在一起,而減少恢複時間。增量備份都需要一個基礎,0集備份,0級備份就是所有增量的基礎。0級增量備份與全備的不同就是0級備份可以做為其它增量備份的基礎備份而全備不可以。如下是0級增量,1級累計增量,1級差異增量的差別。
0級備份:
RMAN> backup incremental level 0 database;
Starting backup at 24-MAY-12
using target database control file instead ofrecovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=139 devtype=DISK
channel ORA_DISK_1: starting incremental level 0datafile backupset
channel ORA_DISK_1: specifying datafile(s) inbackupset
input datafile fno=00001name=/DBData/WWL/system01.dbf
input datafile fno=00003name=/DBData/WWL/sysaux01.dbf
input datafile fno=00002name=/DBData/WWL/undotbs01.dbf
input datafile fno=00004name=/DBData/WWL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 24-MAY-12
channel ORA_DISK_1: finished piece 1 at 24-MAY-12
piece handle=/DBBak/bak_WWL_05_24_0knbqjh0_1_1tag=TAG20120524T214400 comment=NONE
channel ORA_DISK_1: backup set complete, elapsedtime: 00:00:56
Finished backup at 24-MAY-12
Starting Control File and SPFILE Autobackup at24-MAY-12
piecehandle=/DBSoft/product/10.2.0/db_1/dbs/c-5520179-20120524-00 comment=NONE
Finished Control File and SPFILE Autobackup at 24-MAY-12
1級累計增量備份
RMAN> backup incremental level 1 cumulativedatabase;
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1datafile backupset
piece handle=/DBBak/bak_WWL_05_24_0mnbqkvs_1_1tag=TAG20120524T220859 comment=NONE
channel ORA_DISK_1: backup set complete, elapsedtime: 00:00:35
piecehandle=/DBSoft/product/10.2.0/db_1/dbs/c-5520179-20120524-01 comment=NONE
Finished Control File and SPFILE Autobackup at24-MAY-12
RMAN>
1級差異增量備份:
RMAN> backup incremental level 1 database;
input datafile fno=00003 name=/DBData/WWL/sysaux01.dbf
piece handle=/DBBak/bak_WWL_05_24_0onbqls2_1_1tag=TAG20120524T222401 comment=NONE
piece handle=/DBSoft/product/10.2.0/db_1/dbs/c-5520179-20120524-02comment=NONE