RMAN初學者指南(轉)

post0發表於2007-08-14
RMAN初學者指南(轉)[@more@]

  RMAN(Recovery Manager)是DBA的一個重要工具,用於備份、還原和恢復oracle資料庫,前一段時間有網友找我要,可惜沒時間,趁這兩天出差在外沒什麼事,就寫了一下,供初學的朋友參考。本文將介紹RMAN 的基本操作,更多的資訊請參考《Oracle8i Backup & Recovery Guide》及RMAN 手冊,或者是OCP Student Guide M09096《Backup and Recovery Workshop》Volume 2,也可以透過 gototop@ncn.cn 和我聯絡。Oracle 自帶的例子參考$ORACLE_HOME/rdbms/demo 目錄下的*.rcv指令碼。

  

  一、RMAN 簡介

  

  RMAN 可以用來備份和恢復資料庫檔案、歸檔日誌和控制檔案,也可以用來執行完全或不完全的資料庫恢復。RMAN有三種不同的使用者介面:COMMAND LINE方式、GUI 方式(整合在OEM 中的備份管理器)、API 方式(用於整合到第三方的備份軟體中)。具有如下特點:

  1)功能類似物理備份,但比物理備份強大N倍,從下面的特點可以看到;

  2)可以壓縮空塊;

  3)可以在塊水平上實現增量;

  4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;

  5)備份與恢復的過程可以自動管理;

  6)可以使用指令碼(存在Recovery catalog 中)

  7)可以做壞塊監測

  

  二、相關術語解釋

  1)Backup sets 備份集

  備份集顧名思義就是一次備份的集合,它包含本次備份的所有備份片,以oracle專有的格式儲存。一個備份集根據備份的型別不同,可能構成一個完全備份或增量備份。

  2)Backup pieces 備份片

  一個備份集由若干個備份片組成。每個備份片是一個單獨的輸出檔案。一個備份片的大小是有限制的;如果沒有大小的限制, 備份集就只由一個備份片構成。備份片的大小不能大於你的檔案系統所支援的檔案長度的最大值。

  3)Image copies 映像備份

  映像備份不壓縮、不打包、直接COPY 獨立檔案(資料檔案、歸檔日誌、控制檔案),類似作業系統級的檔案備份。而且只能COPY 到磁碟,不能到磁帶。可以作為增量備份的0級,一般用來備份控制檔案。

  4)Full backup 全備份

  全備份是指對資料檔案中使用過的資料塊進行備份,沒有使用過的資料塊是不做備份的,也就是說,RMAN 進行備份是進行壓縮的。

  5)Incremental backup 增量備份

  增量備份是指備份資料檔案中自從上一次同一級別的或更低階別的備份以來被修改過的資料塊。與完全備份相同,增量備份也進行壓縮。增量備份雖然概念很好,備份也很簡單,但恢復起來卻是另外一回事,不僅麻煩而且容易出錯,所以實際中越來越少使用,到了Oracle 9i已經建議不再使用,以後版本會逐漸取消對增量備份的支援。

  6)Recovery catalog 恢復目錄

  恢復目錄用於記錄RMAN 使用過程中的控制資訊,恢復目錄應該經常被同步(這在後面會講到)。儘管我們可以使用nocatalog 方式來使用RMAN,此時控制資訊記錄在目標資料庫的控制檔案中,但這樣畢竟不安全,因為一旦目標資料庫的控制檔案損壞就意味著所有的RMAN 備份失效。同樣的道理恢復目錄應該建立在另外一個資料庫中,在下面的例子中我們稱作“目錄資料庫”。

  

  三、建立恢復目錄

  1、在目錄資料庫中建立恢復目錄所用表空間

  SQL> create tablespace rmants datafile 'c:oracleoradatacc mants.ora' size 20M ;

  表空間已建立。

  2、在目錄資料庫中建立RMAN 使用者並授權

  SQL> create user rman identified by rman default tablespace rmants temporary tablespace temp quota

  unlimited on rmants;

  使用者已建立

  SQL> grant recovery_catalog_owner to rman ;

  授權成功。

  3、在目錄資料庫中建立恢復目錄

  C:>rman catalog rman/rman

  恢復管理器:版本8.1.7.0.0 - Production

  RMAN-06008:連線到恢復目錄資料庫

  RMAN-06428:未安裝恢復目錄

  RMAN>create catalog tablespace rmants;

  RMAN-06431:恢復目錄已建立

  4、註冊目標資料庫到恢復目錄

  注意哦,這裡我的目標資料庫使用的服務名稱是rman,意思為要使用RMAN 進行備份的資料庫,而目錄

  資料庫使用的服務名稱是CC。

  C:>rman target sys/sys@rman

  恢復管理器:版本8.1.7.0.0 - Production

  RMAN-06005:連線到目標資料庫:RMAN (DBID=1303772234)

  RMAN>connect catalog rman/rman@cc

  RMAN-06008:連線到恢復目錄資料庫

  RMAN>register database;

  RMAN-03022:正在編譯命令:register

  RMAN-03023:正在執行命令:register

  RMAN-08006:註冊在恢復目錄中的資料庫

  RMAN-03023:正在執行命令:full resync

  RMAN-08002:正在啟動全部恢復目錄的resync

  RMAN-08004:完成全部resync

  好了,到此為止前面的準備工作都做好了,下面就可以使用RMAN 來進行備份和恢復了。

  

  四、使用RMAN

  下面透過具體的例子來說明RMAN 的使用,這裡會涉及到除了恢復以外的所有RMAN 操作,關於使用RMAN 進行恢復的內容請參考我以前寫的另外一篇文章:RMAN 恢復實踐。

  1、備份整個資料庫

  RMAN>run {

  2> allocate channel c1 type disk;

  3> backup database format 'e:dbbackup2db.dmp';

  4> }

  2、複製資料檔案

  RMAN>run {

  2> allocate channel c1 type disk;

  3> copy datafile 'c:oracleoradata manusers01.dbf' to 'e:dbbackupu.dbf' tag

  =u1215;

  4> }

  3、檢視備份及複製的資訊

  RMAN>list backup;

  RMAN-03022:正在編譯命令:list

  備份集列表

  關鍵字Recid 標記LV 集合標記集合計數完成時間

  ------- ---------- ---------- -- ---------- ---------- ----------------------

  216 1 417347013 0 417346992 1 26-12 月-00

  備份段列表

  關鍵字Pc# Cp# 狀態完成時間段名

  ------- --- --- ----------- ---------------------- ------------------------

  217 1 1 AVAILABLE 26-12 月-00 E:DBBACKUP2DB.DMP

  資料檔案包括列表

  檔名稱LV 型別檢查點SCN 檢查點時間

  ---- ------------------------------------- -- ---- ---------- -------------

  1 C:ORACLEORADATARMANSYSTEM01.DBF 0 Full 33224 26-12 月-00

  2 C:ORACLEORADATARMANRBS01.DBF 0 Full 33224 26-12 月-00

  3 C:ORACLEORADATARMANUSERS01.DBF 0 Full 33224 26-12 月-00

  4 C:ORACLEORADATARMANTEMP01.DBF 0 Full 33224 26-12 月-00

  5 C:ORACLEORADATARMANTOOLS01.DBF 0 Full 33224 26-12 月-00

  6 C:ORACLEORADATARMANINDX01.DBF 0 Full 33224 26-12 月-00

  RMAN>list copy of datafile 'c:oracleoradata manusers01.dbf';

  RMAN-03022:正在編譯命令:list

  資料檔案備份列表

  關鍵字檔案狀態完成時間檢查點SCN 檢查點時間名稱

  ------- ---- - --------------- ---------- --------------- ------

  226 3 A 26-12 月-00 33226 26-12 月-00 E:DBBACKUPU.DBF

  4、在備份是設定相關引數

  format --檔案輸出格式,

  %d--database name,

  %s--backup sets sequence number,

  %p--backup pieces sequence number

  filesperset --每個備份集中所包括的檔案數

  更多引數請參考本文開始時列出的書。

  RMAN>run {

  2> allocate channel c1 type disk;

  3> set limit channel c1 kbytes 8000;

  4> backup

  5> format 'e:dbbackupdb_%d_%s_%p.bck'

  6> (database filesperset=2 );

  7> }

  RMAN-03022:正在編譯命令:allocate

  RMAN-03023:正在執行命令:allocate

  RMAN-08030:分配的通道:c1

  RMAN-08500:通道c1:sid=9 devtype=DISK

  RMAN-03022:正在編譯命令:set limit

  RMAN-03023:正在執行命令:set limit

  RMAN-03022:正在編譯命令:backup

  RMAN-03023:正在執行命令:backup

  RMAN-08008:通道c1:正在啟動full 資料檔案備份集

  RMAN-08502:set_count=6 set_stamp=417351064 creation_time=26-12 月-00

  RMAN-08010:通道c1:正在指定備份集中的資料檔案

  RMAN-08522:輸入資料檔案fno=00003 name=C:ORACLEORADATARMANUSERS01.DBF

  RMAN-08522:輸入資料檔案fno=00005 name=C:ORACLEORADATARMANTOOLS01.DBF

  RMAN-08013:通道c1:已建立1 段

  RMAN-08503:段handle=E:DBBACKUPDB_RMAN_6_1.BCK comment=NONE

  RMAN-08525:備份集完成,經過時間:00:00:03

  RMAN-08008:通道c1:正在啟動full 資料檔案備份集

  RMAN-08502:set_count=7 set_stamp=417351067 creation_time=26-12 月-00

  RMAN-08010:通道c1:正在指定備份集中的資料檔案

  RMAN-08522:輸入資料檔案fno=00002 name=C:ORACLEORADATARMANRBS01.DBF

  RMAN-08522:輸入資料檔案fno=00006 name=C:ORACLEORADATARMANINDX01.DBF

  RMAN-08013:通道c1:已建立1 段

  RMAN-08503:段handle=E:DBBACKUPDB_RMAN_7_1.BCK comment=NONE

  RMAN-08525:備份集完成,經過時間:00:00:04

  RMAN-08008:通道c1:正在啟動full 資料檔案備份集

  RMAN-08502:set_count=8 set_stamp=417351071 creation_time=26-12 月-00

  RMAN-08010:通道c1:正在指定備份集中的資料檔案

  RMAN-08522:輸入


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

相關文章