RMAN 常用命令 1 [final]

tolywang發表於2011-08-01


一,準備工作(如果需使用恢復目錄) :

1). 建立catalog資料庫(假設名稱為rman)  
2). 建立用於恢復目錄的表空間
    SQL> create tablespace rcat_tbs datafile 
      'D:\oracle\product\10.2.0\oradata\rman\rman_tbs01.dbf' size 200M;
3). 建立使用者 
    SQL> create user rman_cat identified by oracle default tablespace
       rcat_tbs temporary tablespace temp ;
    SQL> alter user rman_cat quota unlimited on rcat_tbs;
    SQL> grant recovery_catalog_owner to rman_cat ;
    SQL> grant connect , resource to rman_cat ;
4). 建立恢復目錄 (建立恢復目錄都做了什麼 ??? ) 
    C:\>rman  catalog 
     恢復管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:15:42 2011
     Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     連線到恢復目錄資料庫
   RMAN> create catalog tablespace rcat_tbs ; 
     恢復目錄已建立
5). 透過RMAN連線到目標庫和恢復目錄後,將目標庫註冊到恢復目錄中。
   C:\>rman  target   catalog 
    恢復管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:19:38 2011
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    連線到目標資料庫: TEST01 (DBID=3556425887)
    連線到恢復目錄資料庫
  RMAN> register database;
   註冊在恢復目錄中的資料庫
   正在啟動全部恢復目錄的 resync
   完成全部 resync

6). RMAN備份(測試) 

RMAN> backup device type disk format 'D:\rmanbak\%U' database plus archivelog;

 

 

二,常用命令 :


1.  備份log以append方式儲存在log檔案中.

C:\>set ORACLE_SID=test01
C:\>rman target /   log=c:\rman.log  append
RMAN> backup device type disk format 'D:\rmanbak\%U' database ; 

其中log=c:\rman.log,表示RMAN所有的輸出都不會顯示在螢幕上,而是
全都輸出到rman.log 中, append表示追加.

 

2.  檢視RMAN配置

RMAN> show all;

使用目標資料庫控制檔案替代恢復目錄
RMAN 配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_2\DATABASE\SNCFTEST01.ORA'; # default

RMAN> show device type;

RMAN 配置引數為:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

RMAN> 

 

 


3.  使用Configure修改選項值 

configure命令選項值修改很簡單,可以先透過show all 顯示,然後修改。
RMAN > show all ;
....
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
....

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON ;

新的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功儲存新的 RMAN 配置引數
正在啟動全部恢復目錄的 resync
完成全部 resync

登入目標庫,修改的部分可以透過 select * from v$rman_configuration; 查詢到。

再次show all 檢視CONTROLFILE AUTOBACKUP後面的 # default 會消失。說明以前
更改過,修改回OFF之後同樣後面的 # default 也是消失的 。

 

 


4. PARALLELISM, BACKUP SET,BACKUP PIECES, FILESPERSET, MAXSETSIZE,MAXPIECESIZE

A. 如果設定了PARALLELISM=3,在RUN中沒有單獨透過ALLOCATE CHANNEL指定通道,
它會預設使用PARALLELISM 設定的通道數目。

RMAN > configure device type disk parallelism 3 ;

B. 如果在run命令塊中指定了allocate channel,那麼設定的parallelism配置的
並行通道不起作用,以 allocate channel 為準。
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
}


C. 備份片(BACKUP PIECE)是物理概念,即作業系統中的檔案。每個backup set預設包
含一個backup piece,但是piece的數量還受到maxpiecesize影響,但超過maxpiecesize
時就會產生多個 piece。設定最大備份片大小:
RMAN > configure channel device type disk maxpiecesize 10240 M ;


D. 備份集(BACKUP SET)是邏輯概念,一次備份的backup set的數量可以由FILESPERSET
引數設定,所以如果備份的檔案數超過此引數就會產生多個backup set,


E.  FILESPERSET : 表示每個備份集(backup set)包含多少個資料檔案(dbf檔案)
或歸檔日誌檔案 (注意不是備份片檔案), 如果備份的檔案數超過此引數就會產生
多個備份集 . 


G.  MAXSETSIZE 

一個資料庫的備份是由多個backup set組成的,一個backup set 可能是由多個backup
piece組成的。 

maxsetsize的設定更多側重的是最佳化,它定義了一個backupset的大小,從而rman就會自動
的控制這個backup set包含多少個datafile或archive log等檔案。其作用是與filesperset
差不多的。

maxpiecesize側定的是限制, 因為實際生成的檔案是piece,如果你的檔案系統不支援
大檔案,最大的檔案則為2GB,當然要做maxpiecesize的設定,否則會報錯。


H . 資料塊大小不同的檔案不能在同一備份集中。

select * from v$datafile;
select  * from v$controlfile;
select * from v$archived_log;

資料檔案和控制檔案的block_size = db_block_size = 16K, 歸檔日誌的block_size = 512,
資料檔案,控制檔案能儲存在同樣的備份集上,但是不能與歸檔日誌儲存在同樣的備份集上。
如果啟動了控制檔案自動備份,那麼控制檔案所在的備份檔案會單獨生成一個備份集,不會
與資料檔案備份集合並在一起


I. 檔案數,通道數,備份集的關係 

例子 :
(1). filesperset設定為6,資料檔案數目為30,通道資料為4,透過30/4可以得
出每個備份集可含有8個檔案,取6和8中較小的值6,那麼30/6=5個備份集,那
麼4個通道肯定都有事情可做了。

(2). 如果不指定filesperset,假設資料檔案數目為30,通道資料為4,透過30/4
可以得出每個備份集可含有8個檔案,比較8和預設值64,我們取其中較小的8,
那麼也可以保證4個通道都有事情可做 。 備註: 每個備份集中包含的最大的
檔案數目(dbf數量)為64 。

 

 

5. 使用RMAN進行備份

備份整個庫:
RMAN > backup database; 
RMAN > backup as backupset database format '/u01/cfbak/full_bak_%U';
(1). 表示對整個庫進行備份,RMAN自動建立通道。
(2). 如果資料庫為非歸檔模式,需要資料庫為mount模式進行RMAN備份。
(3). 若是歸檔模式,資料庫可以open,也可以mount,但不能關閉(可在關閉狀態恢復資料庫)。
(4). 不指定備份路徑的情況下, 備份會放在ORACLE_HOME下的類似
     \FLASH_RECOVERY_AREA\TEST01\BACKUPSET\2011_08_11 目錄下,控制檔案及spfile自動
     備份的部分會在 FLASH_RECOVERY_AREA\TEST01\AUTOBACKUP\2011_08_11 下。


只備份一個表空間:
RMAN > BACKUP TABLESPACE SYSTEM; 
RMAN > backup as backupset tablespace users format '/data/backup/tbs_users_%U' ;


只備份資料檔案
RMAN > backup as backupset datafile 4 format '/data/backup/df_#4_%U' ; 
在備份資料檔案時,為了加快速度,可以手動指定為某些檔案設定多個通道,也可以透過
parallelism引數自動建立多個通道,需要注意的是,透過parallelism自動建立的多個通
道可能用不上。

例子:

RMAN > run{
allocate channel c1 device type disk format 'D:\%U';
allocate channel c2 device type disk format 'D:\%U';
backup as backupset datafile 1,2,3,4 ;
sql  'alter system archive log current' ;
}


RMAN > run{
allocate channel c1 device type disk format '/data/backup/%U';
allocate channel c2 device type disk format '/data/backup/%U';
backup as backupset
(datafile 1,4  channel c1)
(datafile 2,3  channel c2);
sql  'alter system archive log current' ;
}

也可以不指定通道的格式,將備份集放在同一個目錄下(注意其中的分號): 
RMAN > run{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
backup as backupset format '/data/backup/%U'
(datafile 1,4  channel c1)
(datafile 2,3  channel c2);
sql  'alter system archive log current' ;
}


不具體指定哪些通道負責哪些檔案,RMAN自動決定:
RMAN > run{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
backup as backupset format '/data/backup/%U'
(database) ;
sql  'alter system archive log current' ;

這樣RMAN會按照備份集大小尺寸相差不多的原則,自動組合資料檔案,最終生成
的兩個備份集的大小尺寸差不多。

我們也可以配置parallelism來配置多個通道:
RMAN > configure device type disk parallelism 3 backup type to backupset ;
以上設定,在每次備份時都會預設自動生成3個通道,執行決定每個通道負責備份
哪些資料檔案,最後得到的3個備份集的尺寸大小會差不多。
RMAN > backup as backupset database format '/data/backup/full_bak_%U' ;

 


備份集的壓縮:

Oracle10g開始,RMAN備份提供對備份集檔案的壓縮,當然只對備份集有效,對映象
副本無效,命令如下, 一般是大概5:1的壓縮 :
RMAN > backup as compressed backupset database ;

壓縮比比較理想。不過壓縮備份集雖能夠節省一些儲存空間,但會降低備份和恢復時
的速度,如何取捨就取決於實際需求了。


RMAN配置中如何去掉SBT_TAPE
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE 'SBT_TAPE'  clear;

 

 

 

6.  RMAN備份型別二 - 鏡象副本(Image Copy)

映象副本(Image copy):  與手工OS Copy備份資料檔案類似,是一個資料檔案生成
一個映象副本檔案(資料庫資料檔案、歸檔重做日誌或者控制檔案的精確副本),不
同的是這個過程由RMAN完成,RMAN複製的時候也是一個資料塊一個資料塊(Oacle block)
的複製,同時預設檢測資料塊是否出現物理損壞(預設不會進行邏輯損壞檢查,需要手
工啟動),且不需要將表空間置為begin backup狀態,和備份集型別不同在於生成的
映象副本中包含使用過的資料塊,也包含從來沒有用過的資料塊 。

一個image copy是對資料庫檔案的二進位制複製,與os的複製命令相同。不同的是rman
的image copy會將備份資訊記錄在rman的備份資訊庫,這些image copy可以被rman用
來恢復檔案,而os的copy命令產生的備份檔案則需要手動的加入到rman的備份資訊庫
才能被rman使用。

Image copy只能建立在disk上,使用as copy選項的backup命令將會建立image copy的備份。

Copy映象複製至少要在mount 狀態下執行(需要讀取控制檔案中的檔案號 等)。
Copy映象複製可作為增量備份的 Level0
Oracle10g開始,允許使用單條命令"backupascopy"進行資料庫複製。

 


備份集/熱備份和映象副本的區別 ---- 

A. 鏡象副本複製檔案過程透過RMAN進行,備份資訊會記錄在RMAN資訊庫中。
B. 與熱備份相似,備份所有的資料塊,且備份檔案以datafile存在。
C. 鏡象備份只能備份在disk上,不能在磁帶上。
D. 與備份集相似,備份過程中可以進行物理損壞的檢測。
E. 可以使用作業系統工具或 RMAN 建立映象副本,也能夠使用作業系統工具
   或RMAN 直接利用映象副本恢復資料庫,而無須任何額外處理。
F. 映象副本可以進行增量備份動作。
G. 生成映象副本的好處在於恢復時速度相對備份集來說要更快 ,恢復時可以
   不用複製,指定新位置即可。
H. OS的copy命令產生的備份檔案需要手動的加入到rman的備份資訊庫才能被rman使用。
I. 備份集可以包含多個資料檔案,備份中可以壓縮及增量備份,但必須使用RMAN恢復。
J. 備份集的格式為RMAN自有格式 。
K. RMAN壓縮只對備份集有效,對鏡象副本無效。

 

鏡象副本的原理 ---

鏡象副本和備份集的原理一樣,進行Oracle block塊的複製,只是整個檔案的塊都需要
掃描到,所有的塊都會被複制到副本中,處理正在被更新的block與RMAN備份集一樣(協
調DBWn將髒塊處理到disk之後再進行)。 

 

 


操作鏡象副本備份 ---

使用RMAN生成映象副本檔案,可以使用以下命令: 
RMAN > backup as copy
       datafile  '/u01/app/oradata/ora10g/users01.dbf'
       format '/u01/backup/users01.dbf' ;

或者使用copy命令:

RMAN > run {
allocate channel c1 device type disk ;
copy datafile  'D:\oracle\product\10.2.0\oradata\test01\USERS01.dbf'
to  'D:\USERS01.bak' ;
}

使用以上命令的時候,可以使用如下命令批次處理資料檔案:
SELECT 'datafile '||''''||name||''''||'
to '||''''||'/backup'||name||''''||',' FROM v$datafile;

 

 


7.  Backup命令的選項 

A. 若需要提高備份速度,可以適時取消RMAN中的物理檢測(一般不建議) :
RMAN > backup nochecksum database ; 

B. 預設情況下,RMAN不會檢查資料塊是否發生邏輯損壞,可以啟動邏輯壞塊檢查:
RMAN > backup check logical database; 

C. RMAN備份時,只要發現了新的壞塊,就會立刻停止備份,如果發現的是上次備份時
已經發現的壞塊,則RMAN會繼續備份。 我們可以設定maxcorrupt引數來通知RMAN,
發現壞塊個數超過指定的數量時才停止備份:
RMAN > run{
set maxcorrupt for datafile 5,7,8,9  to 10 ;
backup database ;
}
表示當在5,7,8,9號檔案中的壞塊超過10個時就停止備份,其他檔案碰到新壞塊就
停止備份。

E. 我們也可以使用validate 來檢驗壞塊, 它不會生成物理的備份檔案 。
RMAN > backup validate database ; 

F. 跳過離線或不可訪問或只讀的檔案,也可以同時都包含。
RMAN > backup database skip offline ;
RMAN > backup database skip inaccessible;
RMAN > backup database skip readonly;
RMAN > backup database skip inaccessible skip readonly;   

G. 只備份上次備份以來新加入的檔案
RMAN > backup database not backed up; 

H. 對那些在指定的時間範圍內,沒有被備份過的資料檔案進行備份,如下:
RMAN > backup database not backed up since time='sysdate-2' ; 

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

相關文章