程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle的差異增量備份和累積增量備份

Oracle的差異增量備份和累積增量備份

編輯:Oracle數據庫基礎
在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查找所需信息),建議有條件的話,歸檔日志保存到能夠接受的時間點,可以保存在磁帶等廉價存取設備上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved