RMAN基本操作手冊

mengbing1990發表於2014-09-11

一,RMANR 連線到庫
1),連線本地資料庫
a,如果本地有多少例項,則需要設定環境變數ORACLE_SID, 
windows 平臺: set ORACLE_SID= INSTANACE NAME 
UNIX/LINX平臺: export ORACLE_SID=INSTANCE NAME
8i : $rman target / nocatalog 
9i以上的資料庫直接 rman target / 就可以了
nocatalog&catalog: 就是連線時,是以控制檔案記錄還是以恢復目錄來記備份資訊,這就二種連線的差別,catalog是需要配置的。

b,如果本地只有一個例項:且設定了環境變數:則無需指定例項了.

連線進入rman,如果使用作業系統驗證,則用 rman target / 
                            如果沒有使用作業系統驗證: 則使用 rman target user/passwd
也可以直接rman,再在裡面用connect 使用者名稱/密碼

2),連線遠端資料庫,
1、要確定資料庫能夠進行遠端管理。
2、在本地建立一個到目標資料庫的連線,同時給一個網路服務名比如叫做test
3、執行:rman target 
4、本地版本要於遠端版本一致或高
就可以了,記住@後面一定是網路服務名,rman target sys/密碼@test

3),帶日誌的連線
rman target / log f:\rman_log.txt

4),暫退rman,回到作業系統的命令提示符
rman> host;
$sqlplus "/ as sysdba" 這樣就可以進入sql環境,退回exit ,exit 就又回到rman提示符

二,rman命令的執行方式
1),單個執行
rman>backup database;

2),批處理
rman>rman{
......
}

3),執行指令碼
a, 用命令列方式呼叫作業系統中儲存的指令碼
c:\ rman target / @backup_db.rman
或 c:\ rman target / cmdfile = backup_db.rman

b, 在rman中執行作業系統中儲存的指令碼檔案
rman> @backup_db.rman

c, 執行存貯在catlog中的指令碼(需要首先為rman建立恢復目錄)
rman > run { execute script backup_whole_db };

三,簡單常見備份型別及解釋
1).整庫
rman> backup database     整庫備份,生成二個備份片段,一個資料檔案片段,一個控制檔案和spfile,放在oracle 軟體的安裝目錄下
rman> backup database format 'f:\bak_u%';     指定備份集的目錄 
rman> list backup of database;                           檢視建立的全庫備份

2).表空間
rman> backup tablespace users;                        表空間的備份,當然也可以format 到指定目錄
rman> list backup of tablespace users;            檢視users表空間的備份情況,注意如果做過全備份,全備份users表空間的資訊也會顯示出來
rman> delete backup 10;                                       刪除編號為10的備份集

3),資料檔案
rman> backup datafile 'f:\users01.dbf';                資料檔案的備份
rman> backup datafile n                                         資料檔案的備份,n 是資料檔案的絕對編號(備份多個資料檔案,中間用逗號隔開)
rman> list backup of datafile n;                            n是資料檔案的編號,透過dba_data_files (顯示多個資料檔案,編號用逗號隔開)

4),控制檔案
rman> backup current controlfile;                         手工單獨備份控制檔案
rman> backup database include current controlfile;   備份任何東東的時候都可以包含備份控制檔案,當然要加include current controlfile子句
rman> backup current controllfile include current controlfile 這樣就可以備份二次控制檔案
rman > configure controlfile autobackup on;     只要設定為on後,不管備份什麼都會備份控制檔案      
備到哪裡要根據引數決定。當設定為on後,controlfile 會自動備份到$ORACLE_HOME/dbs下,
rman > list backup of controlfile                           檢視控制檔案的備份情況

5),歸擋檔案的備份
rman> backup archivelog all;                               備份所有可訪問到的歸檔檔案,當然這個all可以由其他關鍵字眼代替,until, scn, time,sequence
                                                                                    來指定要備份的歸檔區間,
rman>backup current controlfile plus archivelog; 當然備份任何東東加上plus archivelog,就可備份歸檔檔案.
這二種備份方式的區別: 通常線上備份的時候,日誌檔案一直在不斷生成,如何做到完全備份歸檔呢?
a, backup archivelog all, 先alter system switch logfile, 立即備份這些歸檔,對後續生成的歸檔管不了
b, backup ... plus archivlog, 步驟是: 先switch logfile,backup archivelog all,,再執行備份專案備份,再switch logfile ,再backup archivelog all,
    完全備份
rman> delete all input                      備份完後把archivelog 刪掉

6),初始化引數檔案的備份
通常在備份控制檔案時,會自動備份spfile ,當然也可以專門手動備份
rman>backup spfile;

7),對備份集進行備份
rman>backup backupset all;                               對以前所有備份再進行備份一次,如果很多,這個過程很膨大
rman>bakcup backupset n;                                 n 指備份集的id號,當然可以指定多個,逗號隔開
rman>delete input 引數;                  刪除某個備份集

呵呵,有以上簡單備份的基礎,相信寫個塊應該沒問題了!

四,rman 命令綜述
1) . show                                                                注:配置項後面跟了# default的表示該項仍是初始配置,未被修改過。
rman>show all;                                                     太多,檢驗自已的眼神 ~:~ 哈哈
rman>show controlfile autobackup;                  檢視控制檔案的配置引數

2). configure                                                                參考show all裡面的引數,根據自身備份特性修改rman的初始引數
rman>configure retention policy to recovery window of n days;              基於時間的保留策略
rman>configure retention policy to redundancy n;                                     基於冗餘數量的保留策略
rman>configure retention policy to none;                                                    取消備份保留策略
rman>configure backup optimization on;                                                    啟用備份最佳化
rman>configure backup optimization off;                                                   關閉備份最佳化
rman>configure default device type to disk;                                                預設備份裝置磁碟
rman>configure default device type to sbt;                         預設備份裝置磁帶
rman>configure device type disk parallelism 2;                                         備份通道為2,或並行度2,allocate channel可手工指定;
rman>configure controlfile autobackup on;                                                備份任何自動備份控制檔案
rman>configure controlfile autobackup off;                                                 自動備份控制檔案關
rman>configure controlfile autobackup format for device type disk to ' f:\backup\%F';    自動備份的格式及路徑設定
rman>configure snapshot controlfile name to 'f:\database\controlbak.ora';      在備份期間生在成控制檔案的快照
rman>configure database / archivelog backup copies                            設定備份檔案冗餘度,即備份時生成copy
rman>configure maxsetsize =...;                                                                   配置備份集的最大值
rman>configure encryption ....                                                                       設定備份密碼,用於安全恢復
rman>configure encryption for database on/off;                                        啟用或關閉此密碼
rman>configure encryption algorithm 'ASE256';                                        指定加密演算法為ASE256,
rman>configure archivelog deletion policy to appled on standby;         在rac環境中,standby 端可刪備份策略,預設只有primary端可刪
rman>configure exclude for tablespace 'users';                備份進排除users表空間不備份
rman> configure ... clear;                                                                                 把更改項恢復到預設引數

3) .set命令                       我們講了configure是全域性的,那麼set就是會話級的更改,牛吧 !
塊外執行的命令
rman>set echo on | off                                    顯示或關閉rman顯示
rman>set commang id to 'wangzz'              這時你在v$session 檢視中,你會發現client_info 列值有id=wangzz的資訊,方便你檢視備份時狀態.
rman>set DBID n;                                           只能在nomount模式下執行,指定資料庫的識別符號
塊內執行的命令
rman>run{
          allocate channel c1 to device type disk;
           set newname for datafile 4 to 'f:\123.dbf';              備份時把絕對檔案重新命名並指定到新的地方,牛,這樣也可以,i 服了u
          .....
          }

rman> run{
          allocate ....
          set until time "to_date('2010-02-01','yyyy-mm-dd');     設定恢復到某個時間點. 太強了,又汗一個.
          ...
         }

rman> run{
          ...
         set backup copies ;                             設定備份片段的冗餘數
         ...
         }

rman> run{
          ...
         set archivelog destination to 'f:\...';         指定歸檔檔案的備份路徑,預設在log_archive_dest_1;          
         ...
         }

4) . list
rman>list backup;                                                 下面就不作說明了,太簡單了
rman>list backup of controfile;
rman>list backup of datafile 'f:\user01.dbf'
rman>list backup of datafile n;
rman>list backup of archivelog all;
rman>list device type disk backup;                    列出某個裝置上的所有資訊,
rman>list copy of tablespace 'system'             列出系統表空間的(副本)備份資訊,
rman>list expired backup;                                   列出無效的備份

5) . delete 
rman資料庫(rman repository),這是一個邏輯概念,指rman備份恢復需要用到的資料資訊,如備份集路徑,歸檔檔案路徑等,
如果使用了恢復目錄,則這部分資料儲存於恢復目錄中(recovery catalog),否則只會儲存在目標資料庫的控制檔案中。
rman>delete obsolete;                                                     刪除過期備份
rman>delete expired backup;                                          先crosscheck檢查備份集,再標記失效的備份,再刪除
rman>delete expired copy;                                              刪除expired 副本
rman>delete backupset 19;                                             刪除特定備份集 
rman>delete backuppiece 'f:\backup\demo_19.bak'   刪除特定備份片
rman>delete backup;                                                         刪除所有備份集 
rman>delete datafile copy 'f:\backup\demo_19.bak'    刪除特定映像副本
rman>delete copy;                                                              刪除所有映像副本
rman>backup archivelog all delete input;                      備份歸檔後刪除歸檔
rman>delete backupset 22 format="f:\backup\%u.bak" delete input 備份備份集22後,刪除原備份集的id 22;

附錄:當在delete obsolete 時出現如下錯誤,主要原因是因為當前的備份裝置型別( 如原預設是磁帶,現變成磁碟了。用show all檢視一下)不一致了。
RMAN-06091 no channel allocated for maintenance (of an appropriate type)
解決方法: 用下列命令組合就可以清除,你會明白意思的!
rman> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
rman> delete obsolete;
rman> allocate channel for maintenance device type 'sbt_tape' PARMS '...';
rman> delete obsolete;
rman>allocate channel for maintenance type sbt_tape;
rman>allocate channel for maintenance type disk;
rman>delete obsolete device type disk;

6) , report 報表顯示:                       就是對前面所有備份的資訊進行分析
rman>report schema at time'sysdate-7';                      檢視7天前資料庫的模式 
rman>report need backup;                                              檢視所有需要備份的檔案
rman>report need backup tablespace system;           檢視指定表空間是否需要備份
rman>report obsolete;                                                      檢視過期
RMAN> report schema;                           報告目標資料庫的物理結構


7) , crosscheck                                                             檢查備份或歸檔物理檔案的狀態,如果物理檔案存在,並且控制檔案或(恢復目錄)中
                                             有匹配記錄,則有效,如果檔案不存在,則expired無效.
rman>crosscheck archivelog all;                               驗證歸檔日誌檔案,當nls_lang=simplified chinese_china時,10g有一個bug,當提示
                                             驗證成功,要小心,這個說明是失敗的,當提示驗證失敗時,反而是成功的。切記
                                             當nls_lang=american_america時,就正常顯示了
rman>crosscheck bakcup;                                          驗證所有備份集

8) , change 修改狀態                      修改備份檔案或歸檔日誌檔案的狀態,不是指物理檔案,而是這些檔案在控制檔案
                                             或恢復目錄中對應記錄的狀態,有二種available & unavailable
rman>change backupset n unavailable;                 備份集n為不可用
rman>change backup of tablespace user unavailable;      對user 表空間的備份集設為不可用,
rman>change archivelog logseq=n unavailable;                  n為歸檔檔案序號,可能透過list archivelog all 或查詢v$ARCHIVED_LOG 獲取,
                                                     當然你也可以指定歸檔檔案的詳細路徑
rman>change archivelog logseq=n delete;                            序列號為n的歸檔檔案,被更改狀態後直接刪除

9),format 引數
%c:備份片的複製數(從1開始編號);
%d:資料庫名稱;%D:位於該月中的天數 (DD);
%M:位於該年中的月份 (MM);
%F:一個基於DBID 唯一的名稱,這個格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 為該資料庫的DBID,YYYYMMDD 為日期,QQ 是一個1-256 的序列;
%n:資料庫名稱,並且會在右側用x字元進行填充,使其保持長度為8;
%u:是一個由備份集編號和建立時間壓縮後組成的8字元名稱。利用%u可以為每個備份集生成一個唯一的名稱;
%p:表示備份集中備份片段的編號,從1 開始編號;
%U:是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁碟檔案)生成一個唯一名稱,這是預設的命名方式;
%s:備份集的號;
%t:備份集時間戳;
%T:年月日格式(YYYYMMDD);

有了上述基礎,維護應該沒什麼問題了吧!

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

相關文章