rman備份的基本知識

we6100發表於2014-04-05
1、 檢查資料庫模式
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     95
Current log sequence           97

制定歸檔路徑,並修改資料庫歸檔模式

   startup mount
   alter database archivelog
   alter database open

2、連線到target資料庫
rman target /  (如果資料庫沒有起來,也可要直接在rman命令下用startup進行啟動資料庫)

3、常用的備份命令
 備份全庫:
RMAN> backup database plus archivelog delete input;     (備份全庫及控制檔案、伺服器引數檔案與所有歸檔的重做日誌,並刪除舊的歸檔日誌)
備份表空間:
RMAN> backup tablespace system plus archivelog delete input;     (備份指定表空間及歸檔的重做日誌,並刪除舊的歸檔日誌,如果我們不知道tablespace的名字,在rman中,可要通過report schema命令,來檢視錶空間的名字)
備份歸檔日誌:
RMAN> backup archivelog all delete input;     (備份歸檔日誌,並刪除舊的歸檔日誌)
在允許的情況下,修改並行通道,加速備份
RMAN> configure device type disk parallelism 3;   --將並行度改為3

 檢視備份的具體資訊
RMAN>list backupset;
備份保留策略:
RMAN> SHOW RETENTION POLICY;(檢視已經配置的備份策略)
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default基於冗餘的:一份冗餘
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;    (將策略修改成基於恢復視窗的:30天)
不在備份保留策略裡面的  則被視為obsolete
使用report obsolete來檢視已廢棄的備份
使用delete noprompt obsolete刪除廢棄的備份
檢視備份的具體資訊:
RMAN> list backupset;

4、0級,1級,2級增量備份
概念:全備份和0級增量備份幾乎是一樣的。唯一的區別,0級增量備份能作為增量備份的基礎,而全備份不能作為增量備份的基礎。

1級增量備份只儲存那些自從上次0級或完全備份以來改變了的資料塊,如果在此之前已有1級增量備份,
則1級增量備份儲存那些自從上次1級備份以來改變了的資料塊。
同理2級增量備份只儲存那些自從上次0級和1級備份以來改變了的數據塊,如果之前有2級增量備份,
則2級增量備份儲存那些自從上次2級備份以來改變了的資料塊。

備份指令碼
0級指令碼
vi /home/oracle/rmanbak/shell/level0.sql
   crosscheck backup;//檢查備份
   delete noprompt expired backup;//刪除失效備份
   delete noprompt obsolete;//刪除過期備份
   run{
    allocate channel cha1 type disk;
    allocate channel cha2 type disk;
    backup
    incremental level  0 database
    format '/home/oracle/rmanbak/inc0_%u_%T' (u表示唯一的ID,大T是日期,小t是時間)
    include current controlfile   //備份控制檔案
    tag level0 ;//標籤自定義
    sql 'alter system archive log current';   //備份歸檔日誌前,切換下歸檔日誌
    backup archivelog all format '/home/oracle/rmanbak/log_%u_%T';
    release channel cha1;
    release channel cha2;
   }

同理1級、2級備份的指令碼寫好level1,level2的指令碼

自動備份
crontab
使用oracle使用者執行crontab -e
[oracle@redhat4 ~]$ crontab -e

分  時  日 月 星期(0代表星期天)
 0    1   *  *    0    rman target / msglog=/home/oracle/rmanbak/log/bak0.log cmdfile=/home/oracle/rmanbak/shell/level0.sql(星期天凌晨1點oracle會來執行備份命令)
 0      *  *    1    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0    1   *  *    2    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    3    rman target / msglog=/home/oracle/rmanbak/log/bak1.log cmdfile=/home/oracle/rmanbak/shell/level1.sql
 0      *  *    4    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    5    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    6    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql


以上就是RMAN一週典型備份方案

1.星期天凌晨      -level 0 (全備份)
2.星期一凌晨      -level 2 
3.星期二凌晨      -level 2 
4.星期三凌晨      -level 1 
5.星期四凌晨      -level 2 
6.星期五凌晨      -level 2
7.星期六凌晨      -level 2 

 
恢復:
如果星期二需要恢復的話,只需要星期天+星期一+星期二
如果星期四需要恢復的話,只需要0+1+4,
如果星期五需要恢復的話,只需要0+1+4+5,
如果星期六需要恢復的話,只需要0+1+4+5+6.


最後啟動crontab ,啟動crontab的命令:
root> service crond restart

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27500440/viewspace-1136532/,如需轉載,請註明出處,否則將追究法律責任。

相關文章