定製正確的oracle備份策略 0級備份
阿新 • • 發佈:2019-02-16
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查詢所需資訊),建議有條件的話,歸檔日誌儲存一年,可以儲存在磁帶等廉價存取裝置上。
Linux系統下Oracle資料庫的備份:
- FIELNAME=/home/oracle/dmp/`date +%Y%m%d`.dmp
- echo $FIELNAME > /home/oracle/dmp/filename
- /home/oracle/product/9.2/bin/exp ccbip/'und\=2008CN(Y|N)' full=yfile=$FIELNAME
- bzip2 $FIELNAME
注:建立的檔案都是Oracle使用者oinstall組的。