共計 2961 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章主要介紹“怎么理解 rman 差異增量和累計增量”,在日常操作中,相信很多人在怎么理解 rman 差異增量和累計增量問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解 rman 差異增量和累計增量”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
1、概念
差異增量(Differential):是備份低級別或者相同級別備份以來變化的所有數據塊,顧名思議,也就是要備前期備份以來的差異數據塊
若前面的備份同時存在低級別和相同級別,則優先選擇備份從最近的低級別 (n-1) 以來變化的數據塊,
若沒有 n - 1 級別備份,則選擇備份同級別備份以來變化的數據塊,
若沒有同級別的備份,則備份更低級別以來 (n-x) 變化的數據
若前面同時有 n - 1 級別和相同級別,則備份相同級別以來變化的數據
累積增量(Cumulative):是備份 n - 1 級別(上級)或更低級別以來變化的所有數據塊
若前面的備份同時存在低級別和 n - 1 級別,則優先選擇備份從 n - 1 級別以來變化的數據塊
若沒有 n - 1 級別,則備更低級別的(n-x)
2、備份策略及恢復
以 rman 多級增量備份來作為備份策略例子:
增量備份都需要一個 0 級備份來作為基礎,0 級備份與全備份的區別在于 0 級可以用來增量恢復,而全備份則不可以。
備份策略:
eg: 我們對一星期做如下備份策略
案例。
星期 差異增量 累積增量
星期天 0 級 0 級
星期一 2 級 2 級
星期二 2 級 2 級
星期三 1 級 1 級
星期四 2 級 2 級
星期五 2 級 2 級
星期六 2 級 2 級
星期天 0 級 0 級
對于差異增量,周一的二級備從周日到周一變化的數據(沒有 n - 1 級, 也沒有同級別)
周二的二級備從周一到周二變化的數據(沒有 n - 1 級, 有同級別)
周三的一級備從周日到周三變化的數據(沒有 n - 1 級, 有同級別)
周四的二級備從周三到周四變化的數據 (有 n - 1 級)
周五的二級備從周四到周五變化的數據 (有 n - 1 級, 有同級別)
周六的二級備從周五到周六變化的數據 (有 n - 1 級, 有同級別)
如圖:
假如周六數據庫需要恢復(周五的二級備份完畢,未備份周六的),那么差異增量只需要使用星期天的 0 級,星期三的一級,星期四、五的二級加歸檔日志就可以完全恢復
對于累積增量,周一的二級備從周日到周一變化的數據 (沒有 n - 1 級,有更低級別)
周二的二級備從周日到周二變化的數據 (沒有 n - 1 級,有更低級別)
周三的一級備從周日到周三變化的數據 (有 n - 1 級)
周四的二級備從周三到周四變化的數據 (有 n - 1 級)
周五的二級備從周三到周五變化的數據 (有 n - 1 級)
周六的二級備從周三到周六變化的數據 (有 n - 1 級)
如圖示:
假如周六數據庫需要恢復(周五的二級備份完畢,未備份周六的),累積增量則需要星期天的 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 filesperset 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 filesperset 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 filesperset 3 format‘/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #備份歸檔可選,可以單獨定期備份
release channel c1;
release channel c2;
release channel c3;
}
如果按照以上備份策略,則每天的所需要備份的數據量只有一天的改變量。而做恢復時最多要恢復當月的一個零級備份 + 三個一級備份 + 6 個二級備份 + 當天的歸檔 文件。如果不能接受這樣的恢復時間,可以減少零級備份之間的時間間隔。在每次備份后,原則上在該備份點之前的歸檔日志就可以刪除掉了,但是為了進一步的安 全以及日后需要(如使用 LOGMNR 查找所需信息),建議有條件的話,歸檔日志保存到能夠接受的時間點,可以保存在磁帶等廉價存取設備上。
到此,關于“怎么理解 rman 差異增量和累計增量”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!