RMAN 常用命令 2 [final]

tolywang發表於2011-08-01

8.  備份歸檔日誌檔案和控制檔案

在使用RMAN備份歸檔日誌檔案時,RMAN首先會自動進行一次日誌切換,然後對歸檔
日誌檔案進行備份。可以採用指定時間,日誌序列號備份歸檔日誌檔案。
RMAN > backup archivelog from time 'sysdate-3'; 
RMAN > backup archivelog from sequence 230;
RMAN > backup archivelog all ;

可以將備份完畢的歸檔日誌檔案在歸檔路徑下刪除:
RMAN > backup archive all delete input ;
如果歸檔日誌在A,B路徑下都有,需要都刪除的話,需要:
RMAN > backup archive all delete all input ; 

備份資料檔案的時候同時備份歸檔日誌檔案
RMAN > backup database plus archivelog ;
   其中backup database會預設備份datafile, controlfile, spfile;
RMAN > backup tablespace users plus archivelog ;

控制檔案中預設會保留7天的歸檔日誌檔案列表,RMAN備份時會根據目標
資料庫中的控制檔案記錄的這些歸檔日誌檔案列表去找所有歸檔日誌檔案,
如果我們手工刪除了歸檔日誌檔案,不會通知到控制檔案,RMAN備份歸檔
日誌檔案會失敗。這時我們可以使用一下兩種方式讓RMAN繼續:
RMAN > crosscheck archivelog all ;
// validate all archivelogs in your disk. If some are missing,
// it will treat it as expired.
除了設定為expired外,若需要在控制檔案徹底刪除標記為expired的歸檔記錄
RMAN > delete expired archivelog all ;
或者
RMAN > backup database plus archivelog skip inaccessable ;
上面命令表示只是備份那些可以訪問到的,跳過不能訪問到的。
當然也可以加入delete input刪除已經備份的歸檔日誌。
RMAN > backup database plus archivelog skip inaccessable delete input;

備註: 雖然我們可以同時備份datafile和archivelog file,但是他們不會放在
同一個備份集中,因為歸檔日誌以作業系統塊為最小單位,資料檔案以oracle
block為最小單位 。

 


控制檔案的備份 --- 

RMAN > show all ;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default 
可以看到預設情況下控制檔案自動備份是off狀態,我們可以透過on來開啟。
當然我們也可以手工備份控制檔案:
RMAN > backup current controlfile ; 
也可以備份為standby模式的控制檔案,如:
RMAN > BACKUP DEVICE TYPE DISK FORMAT '/data/backup/%U' CURRENT CONTROLFILE FOR STANDBY;
也可以備份資料庫時,同時備份歸檔檔案和控制檔案,如:
RMAN > backup database include current controlfile plus archivelog skip inaccessable ;

 

所有檔案的備份集會放在 /data/backup/%U 下
backup format '/data/backup/%U' database plus archivelog ; 

歸檔日誌檔案備份集放在flash_recover_area下,資料檔案及其他檔案的備份集會放在 /data/backup/%U下
backup database format 'e:\data\backup\%U' plus archivelog ;

歸檔檔案的備份集會放在 /data/backup/%U 下,資料檔案及其他檔案會放在flash_recover_area下
backup database plus archivelog format '/data/backup/%U';

 

 

9.  增量備份

增量備份 -- 只對上一次備份以來發生變化的資料塊進行備份,透過增量備份可以使我們使用
更少的磁帶或磁碟空間,減少完成備份的時間。我們既可以在歸檔模式下進行增量備份,也可
以在非歸檔模式下進行(非歸檔模式下需要啟動到mount狀態)。

如果RMAN在進行增量備份時,沒有發現可以參照的基本備份(0級備份),那麼RMAN會自動進行0級
的基本備份操作,並忽略我們指定的增量備份級別。增量備份的級別,分別為0,1,2,3,4,5。
一般我們只用到0,1,2這三個級別的備份。

增量備份兩種型別 --  差異增量備份和累積增量備份

差異增量備份(differential incremental backup) -- 每次備份時,只對那些小於等於當前
級別的備份以來變化過的資料塊進行備份 (備份上級及同級備份以來所有變化的資料塊,差異
增量是預設增量備份方式)。 差異增量備份是增量備份的預設型別。優點:備份快,缺點:恢復慢.

例子:
1. 週日0級備份
RMAN > backup incremental level=0 database ;
2. 週一,二,四,五,六執行2級備份
RMAN > backup incremental level=2 database ;
3. 週三進行1級備份 
RMAN > backup incremental level=1 database ;


累積增量備份(cumulative incremental backup) -- 每次備份時,只對那些小於(注意:沒有等於)
當前級別的備份以來變化過的資料塊進行備份 (備份上級備份以來所有變化的塊)。優點:恢復快,
缺點:備份慢

例子:
1. 週日0級備份
RMAN > backup incremental level=0 database ;
2. 週一,二,四,五,六執行2級備份
RMAN > backup incremental level=2  cumulative  database ;
3. 週三進行1級備份 
RMAN > backup incremental level=1 cumulative  database ;

 

 

10. 塊改變跟蹤 (Block change tracking)  

參考相關文件 : http://space.itpub.net/35489/viewspace-615786  

從Oracle10g開始,為加快增量備份的速度,Oracle引入一個檔案,專門用來記錄自從
上次備份以來所變化過的資料塊的地址,該檔案叫做變化跟蹤檔案(change tracking  file)。
只要有程式修改了某個資料塊,則會透過CTWR(Change Tracking Writer)後臺程式將數
據塊的地址寫入變化跟蹤檔案,只要建立了變化跟蹤檔案,RMAN就會自動使用該檔案進
行增量備份。變化跟蹤檔案完全由Oracle來管理。之所以加快了備份速度,是因為RMAN
可以不再掃描整個資料檔案以查詢變更資料。一般開啟這個特性對資料庫效能不會有太
大影響。

預設情況下,如果我們指定了初始化引數 db_create_file_dest,那麼我們在建立變化
跟蹤檔案時,可以不指定該檔案的路徑及名稱。
SQL> alter database enable block change tracking ;
發出該命令後,會在db_create_file_dest指定的目錄下建立變化跟蹤檔案,如果沒有
指定引數db_create_file_dest 的值, 那麼需要在後面加入路徑: 
SQL> alter database enable block change tracking using
     file '/data/bc_track/rman_change_track.f'  reuse ;

我們也可以透過disable命令禁用並刪除變化跟蹤檔案。
SQL > alter database disable block change tracking ;

可以透過查詢v$block_change_tracking來確認是否啟用了變化跟蹤檔案。跟蹤檔案
最小為10M,最小擴充套件單位為10M.
SQL> select status ,filename from v$blcok_change_tracking ; 

 

1).透過點陣圖跟蹤兩次備份間變化的資料塊;
2).每次備份前進行點陣圖切換;
3).開發增量備份策略時,要考慮到8個點陣圖的限制;
4).在RAC環境中,change tracking file需要放在共享儲存上;
5).Change tracking file的大小和資料庫的大小和enabled的redo thread的個數成正比;
6).Change tracking file的大小和資料更新的頻率無關;
7).在mount或open狀態下enable change tracking;
8).Enable change tracking
  ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE
  '/mydir/rman_change_track.f' REUSE;
9).Disable change tracking
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
10). 檢查change tracking狀態
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
11).改變change tracking file的位置
a. 不關閉資料庫的方式
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
注意:這種方式會丟失change tracking file的內容
b. 關閉資料庫的方式
SQL> SELECT FILENAME FROM V$BLOCK_CHANGE_TRACKING;(確定當前的檔名)
SQL> SHUTDOWN IMMEDIATE
用系統命令將檔案move到新路徑:
SQL> ALTER DATABASE RENAME FILE
'/disk1/changetracking/o1_mf_2f71np5j_.chg' TO
'/disk2/changetracking/o1_mf_2f71np5j_.chg';
SQL> ALTER DATABASE OPEN;

 

 

11.  增量追加備份(Incrementally Updated Backups)

從Oracle10g開始,RMAN引入了一個新的特性,能夠將增量備份應用到某個映象副本上去。

增量追加備份(Incrementally Updated Backups):前滾映象複製(Rolling Forward Image
Copy Backups) .

增量追加備份工作原理:首先建立一個檔案映象複製,然後定期把從上次映象複製最大SCN
以來變化的資料塊追加到映象複製檔案中。增量追加備份可以達到快速恢復的目的,如果
是每天進行增量追加的話,在進行恢復的時候,我們最多應用一天的REDO資料就可以完成恢
復。

建立增量追加備份,格式如下:
BACKUP... FOR RECOVER OF COPY WITH TAG


一個基礎的增量追加備份示例:簡稱basic指令碼:

RMAN > run{
recover copy of database with tag 'incr_update' ;
backup incremental level 1 for recover of copy with tag 'incr_update' database;
}

整個basic指令碼的執行情況: 

第一次執行該指令碼沒有資料檔案複製和增量備份,所以執行RECOVER COPY OF DATABASE WITH
TAG 'incr_update' 沒有任何結果;執行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY
WITH TAG 'incr_update' DATABASE ; 將產生資料檔案的映象檔案複製。

第二次執行該指令碼,由於第一次執行的時候BACKUP INCREMENTAL LEVEL 1…… FOR RECOVER
OF COPY WITH TAG……命令產生了一個映象檔案複製,但是沒有Level 1的增量備份,所以
執行RECOVER COPY OF DATABASE WITH TAG 'incr_update' 還是沒有任何結果;執行BACKUP
INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE ; 將產生
Level 1增量備份。

第三次執行該指令碼,執行RECOVER COPY OF DATABASE WITH TAG 'incr_update'命令將把第二
次執行該指令碼產生的Level 1增量備份追加到映象檔案複製,同時又產生一個新的LEVEL1增量
備份檔案。

以後再執行該指令碼都是把上次產生的Level 1的增量備份追加到映象檔案複製,然後再產生一
個新的Level 1的增量備份檔案。

如果需要恢復,我們首先恢復映象檔案複製和最後一次Level 1增量備份,最後應用redo .

 

 


12.  顯示備份資訊

a. list命令

顯示當前資料庫中的所有備份
RMAN >list backup ;

顯示特定備份集的資訊
RMAN > list backupset 7 ;

顯示對某個表空間或某個檔案的備份資訊
RMAN > list backup of tablespace users;
RMAN > list backup of datafile 4 ;

顯示資料庫或某個表空間映象副本的資訊
RMAN > list copy of database;
RMAN > list copy of tablespace users ;

顯示有關歸檔日誌檔案的備份資訊
RMAN > list backup of archivelog all ;
RMAN > list backup of archivelog from time='sysdate-2' ;

顯示有關控制檔案或spfile的備份資訊
RMAN > list backup of controlfile ;
RMAN > list backup of spfile ;

顯示有關控制檔案的的映象副本資訊
RMAN > list copy of controlfile ;

備註: 大多數list命令都可以在末尾使用summary引數,表示彙總形式
顯示有關備份的資訊。
RMAN > list backup summary;
RMAN > list backup of tablespace users summary;

我們可以顯示每個備份片和備份集的資訊
RMAN > list backup by file ;


列出過期(expired)備份,所謂過期的備份指的是備份的檔案已經丟失(比如手工刪除
了歸檔日誌檔案),但是備份的後設資料中仍然記錄著這些備份的資訊。我們需要先使用
下面的命令讓RMAN檢查當前有哪些已經過期的備份集。
RMAN > crosscheck backupset ;

然後使用下面的命令顯示那些標示為過期的備份
RMAN > list expired backupset ;

最後我們使用下面的命令刪除這些過期的備份
RMAN > delete noprompt expired backupset ;


b. report 命令

該命令具有一定的分析能力。能夠回答諸如哪些資料檔案需要備份,哪些可以被
刪除等問題。

RMAN> report schema ;  顯示資料庫的結構,包括資料檔案的路徑及大小
RMAN > report obsolete ;  找出可以丟棄的備份檔案 。
RMAN > delete noprompt obsolete;  刪除備份檔案 。
RMAN > report need backup ;   顯示哪些檔案需要備份。
RMAN > report need backup incremental 3 ;
表示那些在恢復時,需要應用的增量備份的個數超過3個的所有資料檔案。

RMAN > report need backup days 3 ; 顯示最近3天以來沒有備份過的資料檔案;

RMAN > report need backup redundancy 3; 
顯示那些沒有3個完整備份的資料檔案 。

RMAN > report need backup recover window of 3 days ;
表示如果需要恢復到3天前的狀態,還需要備份哪些資料檔案。

注意: 使用report need backup 顯示哪些資料檔案需要備份時,都是以完全備份
為基礎,也即是將資料庫恢復到最新狀態為前提條件的。


 

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

相關文章