熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

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

2013-11-13 22:16:53  來源: Oracle 

  在rman增量備份中有差異增量和累積增量的概念

  概念

  差異增量是備份上級及同級備份以來所有變化的數據塊差異增量是默認增量備份方式

  累積增量是備份上級備份以來所有變化的塊

  因為累積增量是備份上級備份以來所有變化的數據塊所以累積增量需要更多的備份時間同時需要較小的恢復時間而差異增量正好相反它可以備份同級備份以來變化的數據塊所以會減少備份時間但需要更多的恢復時間在oracle 中增量備份需要通過掃描整個數據庫的數據塊才能知道哪些數據塊發生了變化這是一個代價很大時間很長的過程而且由於增量備份形成多個不同的備份集使恢復變得更加不可靠所以增量備份在版本中仍然不被推薦使用g中增量備份作了很大的改進不需要再掃描所有數據塊就能得知哪些數據塊發生變化從而大大提升備份效率但這些卻以犧牲磁盤i/o為代價所以在oltp事務系統中還得衡量是否願意以i/o為代價來保證安全及高可用性g還支持增量合並增量備份可支持級增量

  備份策略及恢復

  以rman多級增量備份來作為備份策略例子

  增量備份都需要一個級備份來作為基礎級備份與全備份的區別在於級可以用來增量恢復而全備份則不可以

  備份策略

  eg我們對一星期做如下備份策略  那麼差異增量只需要使用星期天的星期三的一級星期四五的二級就可以恢復累積增量則需要星期天的星期三的星期五的二級即可進行恢復以上是一個星期的備份策略如果做長期的備份策略則只需要把備份的時間延長即可得到新的備份策略具體需要看自己備份及恢復能夠接受的程度而頂見最後的備份策略典型案例

  

  星期

  差異增量

  累積增量

  星期天

  

  

  星期一

  

  

  星期二

  

  

  星期三

  

  

  星期四

  

  

  星期五

  

  

  星期六

  

  

  星期天

  

  

  備份命令如下

  零級備份
    backup incremental level database;
    一級差異增量
    backup incremental level database;
    一級累計增量
    backup incremental level cumulative database;

  備份策略典型案例

  每半年做一個數據庫的全備份(包括所有的數據和只讀表空間)
    每一個月做一次零級備份(不包含只讀表空間)
    每個星期做一次一級備份
    每天做一次二級備份

  任何數據庫的更改需要重新同步CATALOG目錄並重新備份(如添加數據文件)或重新備份(如修改表空間為只讀)
    建議備份一段時間歸檔日志和定期備份歸檔到到磁帶上

  全庫備份腳本

  run{
    allocate channel c type disk;
    allocate channel c type disk;
    allocate channel c type disk;
    backup full tag dbfull format /u/oradata/backup/full%u_%s_%p database
    include current controlfile;
    sql alter system archive log current;
    backup fileaperset format /u/oradata/backup/arch%u_%s_%p
    archivelog all delete input; #備份歸檔可選可以單獨定期備份
    release channel c;
    release channel c;
    release channel c;
    }

  零級備份腳本

   run{
    allocate channel c type disk;
    allocate channel c type disk;
    allocate channel c type disk;
    backup incremental level tag db format /u/oradata/backup/db%u_%s_%p
    database skip readonly;
    sql alter system archive log current;
    backup fileaperset format /u/oradata/backup/arch%u_%s_%p
    archivelog all delete input; #備份歸檔可選可以單獨定期備份
    release channel c;
    release channel c;
    release channel c;
    }

  一級備份腳本

     run{
    allocate channel c type disk;
    allocate channel c type disk;
    allocate channel c type disk;
    backup incremental level tag db format /u/oradata/backup/db%u_%s_%p
    database skip readonly;
    sql alter system archive log current;
    backup fileaperset format /u/oradata/backup/arch%u_%s_%p
    archivelog all delete input; #備份歸檔可選可以單獨定期備份
    release channel c;
    release channel c;
    release channel c;
    }

  如果按照以上備份策略則每天的所需要備份的數據量只有一天的改變量而做恢復時最多要恢復當月的一個零級備份+三個一級備份+個二級備份+當天的歸檔文件如果不能接受這樣的恢復時間可以減少零級備份之間的時間間隔在每次備份後原則上在該備份點之前的歸檔日志就可以刪除掉了但是為了進一步的安全以及日後需要(如使用LOGMNR查找所需信息)建議有條件的話歸檔日志保存到能夠接受的時間點可以保存在磁帶等廉價存取設備上


From:http://tw.wingwit.com/Article/program/Oracle/201311/18676.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.