RMAN 初學者指南

來源:互聯網
上載者:User
初學 RMAN 初學者指南

轉自聚賢莊  作者:gototop
============================================
這篇文章是去年寫的了,最初發表在chinaunix.net的oracle論壇裡,收錄在舊版文集中,可能很多沒有看到,總有人寫信要,今天乘改版之際就把它單獨拿出來了。(gototop 2003.6.24注)
  
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:\oracle\oradata\cc\rmants.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:\dbbackup\2db.dmp';
4> }
2、複製資料檔案
RMAN>run {
2> allocate channel c1 type disk;
3> copy datafile 'c:\oracle\oradata\rman\users01.dbf' to 'e:\dbbackup\u.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:\DBBACKUP\2DB.DMP
資料檔案包括列表
檔案名稱LV 類型檢查點SCN 檢查點時間
---- ------------------------------------- -- ---- ---------- -------------
1 C:\ORACLE\ORADATA\RMAN YSTEM01.DBF 0 Full 33224 26-12 月-00
2 C:\ORACLE\ORADATA\RMAN\RBS01.DBF 0 Full 33224 26-12 月-00
3 C:\ORACLE\ORADATA\RMAN\USERS01.DBF 0 Full 33224 26-12 月-00
4 C:\ORACLE\ORADATA\RMAN\TEMP01.DBF 0 Full 33224 26-12 月-00
5 C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF 0 Full 33224 26-12 月-00
6 C:\ORACLE\ORADATA\RMAN\INDX01.DBF 0 Full 33224 26-12 月-00
RMAN>list copy of datafile 'c:\oracle\oradata\rman\users01.dbf';
RMAN-03022:正在編譯命令:list
資料檔案備份列表
關鍵字檔案狀態完成時間檢查點SCN 檢查點時間名稱
------- ---- - --------------- ---------- --------------- ------
226 3 A 26-12 月-00 33226 26-12 月-00 E:\DBBACKUP\U.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:\dbbackup\db_%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:\ORACLE\ORADATA\RMAN\USERS01.DBF
RMAN-08522:輸入資料檔案fno=00005 name=C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF
RMAN-08013:通道c1:已建立1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_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:\ORACLE\ORADATA\RMAN\RBS01.DBF
RMAN-08522:輸入資料檔案fno=00006 name=C:\ORACLE\ORADATA\RMAN\INDX01.DBF
RMAN-08013:通道c1:已建立1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_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:輸入資料檔案fno=00001 name=C:\ORACLE\ORADATA\RMAN YSTEM01.DBF
RMAN-08011:備份組中包括當前控制檔案
RMAN-08013:通道c1:已建立1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_1.BCK comment=NONE
RMAN-08013:通道c1:已建立2 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_2.BCK comment=NONE
RMAN-08013:通道c1:已建立3 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_3.BCK comment=NONE
RMAN-08013:通道c1:已建立4 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_4.BCK comment=NONE
RMAN-08013:通道c1:已建立5 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_5.BCK comment=NONE
RMAN-08013:通道c1:已建立6 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_6.BCK comment=NONE
RMAN-08013:通道c1:已建立7 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_7.BCK comment=NONE
RMAN-08525:備份組完成,經過時間:00:00:19
.... ....
RMAN-08008:通道c1:正在啟動full 資料檔案備份組
RMAN-08502:set_count=9 set_stamp=417351090 creation_time=26-12 月-00
RMAN-08010:通道c1:正在指定備份組中的資料檔案
RMAN-08522:輸入資料檔案fno=00004 name=C:\ORACLE\ORADATA\RMAN\TEMP01.DBF
RMAN-08013:通道c1:已建立1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_9_1.BCK comment=NONE
RMAN-08525:備份組完成,經過時間:00:00:07
RMAN-03023:正在執行命令:partial resync
RMAN-08003:啟動部分恢複目錄的resync
RMAN-08005:完成部分resync
RMAN-08031:釋放的通道:c1
5、使用指令碼功能
使用指令碼的目的在於方便我們操作中的方便,操作上和預存程序相似。
RMAN>create script l0dbbackup {
2> allocate channel c1 type disk;
3> backup
4> format 'e:\dbbackup\db_%d_%s_%p.bck'
5> (database filesperset=2 );
6> }
RMAN-03022:正在編譯命令:create script
RMAN-03023:正在執行命令:create script
RMAN-08085:已建立指令碼l0dbbackup
RMAN>run {execute script l0dbbackup; }
 


相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。