兩篇文章、兩個角度,由淺入深。首先來看第一篇。
引自:http://smailes.blog.51cto.com/28248/45813
增量備份(incremental backup)
增量備份比完全備份快得多。在進行增量備份,只有那些在上次完全或者增量備份後被
修改了的文件纔會被備份。正是由於這個原因,增量備份所需時間僅爲完全備份的幾分之一
。爲了確認一個文件是否在上次完全備份後被修改,備份軟件會檢查一個叫做歸檔位(arch
ive bit)的設置項。
當一個文件以任何形式被更改或者從一個位置拷貝到了另一個位置,歸檔位都會記錄下
這一變化,以便這個文件在下次備份時被包含在內。完全備份在進行前不會關心這些文件的
歸檔位是否已經被設置,不過完全備份會在完成後清除歸檔位。任何在隨後時間裏被修改過
的文件又會在歸檔位中記錄下來。
差量備份(differential backup)不會在備份完成後清除歸檔塊,而增量備份會在完成
後清除歸檔塊,這樣就能避免有些文件不必要地再次被備份。使用歸檔塊還能使用戶真實地
查看到那些文件需要備份。
速度更快的備份也需要付出有些代價——在這個情況下, 就是恢復的時間。當從增量備
份裏恢復時,用戶需要最近一次的完全備份和自此以後的所有增量備份。例如,如果用戶在
星期五進行了完全備份,然後在星期一、星期二、星期三進行了增量備份,然後服務器在星
期四早上崩潰了,那麼用戶就需要4盒磁帶 - 星期五的完全備份盒星期一、星期二、星期三
的增量備份。
差量備份
差量備份和增量備份往往容易被弄混淆,不過兩者之間有一個明顯的區別。增量備份會
備份那些自從上次完全備份或者增量備份之後被修改過的文件,差量備份會備份自從上次完
全備份後被修改過的文件。從差量備份中恢復也是很快的,因爲只需要兩份磁帶——最後一
次完全備份和最後一次差量備份。
差量備份在那些擁有充足空間和時間來進行備份的環境中很適用。在進行差量備份時,
軟件會尋找那些設置了歸檔塊的文件,然後僅僅備份這些文件。
上面已經講過了,差量備份拷貝任何自從上次完全備份經過了修改的文件,而完全備份
會清除歸檔塊中的信息,差量備份不會改動歸檔塊的狀態。這樣做的優點是恢復時只需要2份
磁帶就可以進行完全的復原。不利之處是,每次進行差量備份,都非常有可能把那些在上次
完全備份後被修改了,不過在上次差量備份後沒有被修改過的文件備份不止一次。
看完上面的內容你應該有個大體的瞭解了吧。那再來看來下面的、從另一角度解釋的文章,你就會比較清楚了……
引自:http://www.qnr.cn/pc/ora/study/200904/142790.html
在rman增量備份中,有差異增量和累積增量的概念
1、概念
差異增量:是備份上級及同級備份以來所有變化的數據塊,差異增量是默認增量備份方式
累積增量:是備份上級備份以來所有變化的塊
因爲累積增量是備份上級備份以來所有變化的數據塊,所以累積增量需要更多的備份時間,同時需要較小的恢復時間;而差異增量正好相反,它可以備份同級備份以來變化的數據塊。所以會減少備份時間,但需要更多的恢復時間。在oracle 9中增量備份需要通過掃描整個數據庫的數據塊才能知道哪些數據塊發生了變化,這是一個代價很大,時間很長的過程,而且由於增量備份形成多個不同的備份集,使恢復變得更加不可靠,所以增量備份在版本9中仍然不被推薦使用;在10g中,增量備份作了很大的改進,不需要再掃描所有數據塊就能得知哪些數據塊發生變化,從而大大提升備份效率。但這些卻以犧牲磁盤i/o爲代價,所以在oltp事務系統中還得衡量是否願意以i/o爲代價來保證安全及高可用性。10g還支持增量合併,增量備份可支持7級增量。
2、備份策略及恢復
以rman多級增量備份來作爲備份策略例子:
增量備份都需要一個0級備份來作爲基礎,0級備份與全備份的區別在於0級可以用來增量恢復,而全備份則不可以。
備份策略:
eg:我們對一星期做如下備份策略 ,那麼差異增量只需要使用星期天的0級,星期三的一級,星期四、五的二級就可以恢復,累積增量則需要星期天的0級、星期三的1級,星期五的二級即可進行恢復。以上是一個星期的備份策略,如果做長期的備份策略則只需要把備份的時間延長即可得到新的備份策略,具體需要看自己備份及恢復能夠接受的程度而頂,見最後的備份策略典型案例。
星期 | 差異增量 | 累積增量 |
星期天 | 0級 | 0級 |
星期一 | 2級 | 2級 |
星期二 | 2級 | 2級 |
星期三 | 1級 | 1級 |
星期四 | 2級 | 2級 |
星期五 | 2級 | 2級 |
星期六 | 2級 | 2級 |
星期天 | 0級 | 0級 |
零級備份
backup incremental level 0 database;
一級差異增量
backup incremental level 1 database;
一級累計增量
backup incremental level 1 cumulative database;
備份策略典型案例:
每半年做一個數據庫的全備份(包括所有的數據和只讀表空間)
每一個月做一次零級備份(不包含只讀表空間)
每個星期做一次一級備份
每天做一次二級備份
任何數據庫的更改需要重新同步CATALOG目錄並重新備份(如添加數據文件)或重新備份(如修改表空間爲只讀)
建議備份一段時間歸檔日誌和定期備份歸檔到到磁帶上
全庫備份腳本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup full tag ’dbfull’ format ’/u01/oradata/backup/full%u_%s_%p’ database
include current controlfile;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #備份歸檔可選,可以單獨定期備份
release channel c1;
release channel c2;
release channel c3;
}
零級備份腳本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 tag ’db0’ format ’/u01/oradata/backup/db0%u_%s_%p’
database skip readonly;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #備份歸檔可選,可以單獨定期備份
release channel c1;
release channel c2;
release channel c3;
}
一級備份腳本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 tag ’db1’ format ’/u01/oradata/backup/db1%u_%s_%p’
database skip readonly;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #備份歸檔可選,可以單獨定期備份
release channel c1;
release channel c2;
release channel c3;
}
如果按照以上備份策略,則每天的所需要備份的數據量只有一天的改變量。而做恢復時最多要恢復當月的一個零級備份+三個一級備份+6個二級備份+當天的歸檔文件。如果不能接受這樣的恢復時間,可以減少零級備份之間的時間間隔。在每次備份後,原則上在該備份點之前的歸檔日誌就可以刪除掉了,但是爲了進一步的安全以及日後需要(如使用LOGMNR查找所需信息),建議有條件的話,歸檔日誌保存到能夠接受的時間點,可以保存在磁帶等廉價存取設備上。