oracle備份策略的定制關系到Oracle數據庫的運行,正確的Oracle備份策略不僅能保證數據庫服務器的24*7的高性能的運行,還能保證備份與恢復的快速性與可靠性。
采用多級備份就是為了減少每天備份所需要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有一個權衡。比如只要進行一個數據庫的全備份,然後就只備份歸檔也可以保證能把數據庫恢復到最新的狀態,但是這樣的恢復時間將是不可容忍的。多級備份也正是 為了解決這種問題,以下就是一個多級備份的例子:
每半年做一個數據庫的全備份(包括所有的數據和只讀表空間)
每一個月做一次零級備份(不包含只讀表空間)
每個星期做一次一級備份
每天做一次二級備份
任何數據庫的更改需要重新同步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;
- }
如果按照以上Oracle備份策略,則每天的所需要備份的數據量只有一天的改變量。而做恢復時最多要恢復當月的一個零級備份+三個一級備份+6個二級備份+當天的歸檔文件。如果不能接受這樣的恢復時間,可以減少零級備份之間的時間間隔。
在每次備份後,原則上在該備份點之前的歸檔日志就可以刪除掉了,但是為了進一步的安全以及日後需要(如使用LOGMNR查找所需信息),建議有條件的話,歸檔日志保存一年,可以保存在磁帶等廉價存取設備上。