1. 程式人生 > >定製正確的oracle備份策略 0級備份

定製正確的oracle備份策略 0級備份

oracle備份策略的定製關係到oracle資料庫的執行,正確的oracle備份策略不僅能保證資料庫伺服器的24*7的高效能的執行,還能保證備份與恢復的快速性與可靠性。

採用多級備份就是為了減少每天備份所需要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有一個權衡。比如只要進行一個數據庫的全備份,然後就只備份歸檔也可以保證能把資料庫恢復到最新的狀態,但是這樣的恢復時間將是不可容忍的。多級備份也正是     為了解決這種問題,以下就是一個多級備份的例子:

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

任何資料庫的更改需要重新同步CATALOG目錄並重新備份(如新增資料檔案)或重新備份(如修改表空間為只讀)每次備份後都可以備份歸檔日誌或定期備份歸檔日誌。如果可能,可以直接備份到磁帶上。資料庫全備份的指令碼

  1. run{   
  2. allocate channel c1 type disk;   
  3. allocate channel c2 type disk;   
  4. allocate channel c3 type disk;   
  5. backup full tag ‘dbfull’ format ‘/u01/oradata/backup/full%u_%s_%p’ database   
  6. include current controlfile;   
  7. sql ‘alter system archive log current’;   
  8. backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’    
  9. archivelog all delete input; #備份歸檔可選,可以單獨定期備份   
  10. release channel c1;   
  11. release channel c2;   
  12. release channel c3;   
  13. }  

零級備份的指令碼

  1. run{   
  2. allocate channel c1 type disk;   
  3. allocate channel c2 type disk;   
  4. allocate channel c3 type disk;   
  5. backup incremental level 0 tag ‘db0’ format ‘/u01/oradata/backup/db0%u_%s_%p’    
  6. database skip readonly;   
  7. sql ‘alter system archive log current’;   
  8. backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’    
  9. archivelog all delete input; #備份歸檔可選,可以單獨定期備份   
  10. release channel c1;   
  11. release channel c2;   
  12. release channel c3;   
  13. }  

同理,我們可以得到一級備份,二級備份的指令碼,如一級備份的指令碼

  1. run{   
  2. allocate channel c1 type disk;   
  3. allocate channel c2 type disk;   
  4. allocate channel c3 type disk;   
  5. backup incremental level 1 tag ‘db1’ format ‘/u01/oradata/backup/db1%u_%s_%p’    
  6. database skip readonly;   
  7. sql ‘alter system archive log current’;   
  8. backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’    
  9. archivelog all delete input; #備份歸檔可選,可以單獨定期備份   
  10. release channel c1;   
  11. release channel c2;   
  12. release channel c3;   
  13. }  

如果按照以上oracle備份策略,則每天的所需要備份的資料量只有一天的改變數。而做恢復時最多要恢復當月的一個零級備份+三個一級備份+6個二級備份+當天的歸檔檔案。如果不能接受這樣的恢復時間,可以減少零級備份之間的時間間隔。 
   
在每次備份後,原則上在該備份點之前的歸檔日誌就可以刪除掉了,但是為了進一步的安全以及日後需要(如使用LOGMNR查詢所需資訊),建議有條件的話,歸檔日誌儲存一年,可以儲存在磁帶等廉價存取裝置上。 
 

Linux系統下Oracle資料庫的備份:

  1. FIELNAME=/home/oracle/dmp/`date +%Y%m%d`.dmp  
  2. echo $FIELNAME > /home/oracle/dmp/filename  
  3. /home/oracle/product/9.2/bin/exp ccbip/'und\=2008CN(Y|N)' full=yfile=$FIELNAME  
  4. bzip2 $FIELNAME 

注:建立的檔案都是Oracle使用者oinstall組的。