前面咱們已經知道了如何進入rman,以及rman的一些基本命令,相信你們定會覺着rman操做的簡單,事實也確實如此,但萬不要所以小視rman的強大,簡單每每意味着靈活,靈活對於那些有心人則意味着主動權盡在掌握。linux
1、RMAN備份形式web
一、鏡像複製(Image Copies)數據庫
鏡像複製實際上就是數據文件、控制文件或歸檔文件的複製,與用戶經過操做系統命令創建的文件複製實質同樣,只不過RMAN是利用目標數據庫中的服務進程來完成文件複製,而用戶則是用操做系統命令。因此鏡像複製的方式體現不出RMAN的優點,也並不是咱們討論的重點,你們瞭解一下便可。windows
二、備份集(Backup Sets)bash
備份集是經過RMAN建立的邏輯備份對象。一個備份集中能夠包含多個數據文件、控制文件或歸檔文件。備份集在物理上是由多個備份片斷組成,每一個備份片斷是一個操做系統文件。spa
2、RMAN命令執行方式操作系統
在進入演練以前,你們還有必要了解運行rman命令的方式,就目前已知的狀況,共有4種運行方式。日誌
一、單個執行(沒啥說的,以前的示例都是這種方式)code
RMAN> backup database ;
二、批處理(呵呵,跳票的補上)orm
RMAN> RUN{ ....................... ....................... }
批處理方式實質是將原來單個執行的命令組合到一塊兒,並放在run{}之間,這種方式最大的好處是全部在run中的命令被視爲一個做業,若是做業中任何一條命令執行失敗,則整個命令中止執行,即失敗命令後的其它命令都不會再被執行。這種方式是最常使用的方式,特別對於後臺執行。
三、運行腳本(又能細分爲幾種方式以下:)
C:\> rman TARGET / @backup_db.rman RMAN> @backup_db.rman RMAN> RUN { @backup_db.rman }
運行存儲在恢復目錄中的腳本(須要首先爲rman建立恢復目錄)
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
看看,夠靈活吧。
四、操做系統腳本(linux,windows環境下小有差別,但只是操做系統命令的不一樣)
C:\ > rman cmdfile=backup_db.rman
明眼人看的出來,後兩種實際上是前面兩種加上操做系統命令的綜合應用。
3、對數據庫進行全備
一、使用backup database命令執行備份
RMAN> BACKUP DATABASE;
執行上述命令後將對目標數據庫中的全部數據文件進行備份,因爲沒有顯式指定FORMAT參數,rman會自動爲每一個備份片斷命名,並保存在ORACLE_HOME/database目錄下。
固然,也能夠經過顯式指定format參數來自定義備份片斷的命令規則,好比:
RMAN> BACKUP DATABASE FORMAT ¨D:\BACKUP\%U¨;
( 關於%U的格式說明,詳細諮詢度娘。)
2 、經過list命令查看剛剛建立的備份信息:
RMAN> list backup of database;
正在使用目標數據庫控制文件替代恢復目錄
備份集列表
=================== BS 關鍵字 類型 LV 大小 設備類型 通過時間 完成時間 ------- ---- -- ---------- ----------- ------------ ---------- 11 Incr 0 827M DISK 00:01:30 26-6 月 -07 BP 關鍵字: 11 狀態: AVAILABLE 標記:TAG20070629T150701 段名:D:\BACKUP\0CILGG8L_1_1 備份集 11 中的數據文件列表 文件 LV 類型 Ckp SCN Ckp 時間 名稱 ---- -- ---- ---------- ---------- ---- 1 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\SYSTEM01.DBF 2 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\UNDOTBS01.DBF 3 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\DRSYS01.DBF 4 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\EXAMPLE01.DBF 5 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\INDX01.DBF 6 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\ODM01.DBF 7 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\TOOLS01.DBF 8 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF 9 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\XDB01.DBF 10 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA;
4、備份表空間
只要實例啓動並處於加載狀態,不論數據庫是否打開,均可以在rman中對錶空間進行備份,並且不須要像手動備份那樣先¨ALTER TABLESPACE ... BEGIN BACKUP¨。例如:
RMAN> backup tablespace jweb; 啓動 backup 於 26 - 6 月 -07 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在啓動 full 數據文件備份集 通道 ORA_DISK_1: 正在指定備份集中的數據文件 輸入數據文件 fno=00010 name=F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA 通道 ORA_DISK_1: 正在啓動段 1 於 26 - 6 月 -07 通道 ORA_DISK_1: 已完成段 1 於 26 - 6 月 -07 段 handle=F:\ORAHOME1\DATABASE\0JIM0BBV_1_1 comment=NONE 通道 ORA_DISK_1: 備份集已完成, 通過時間:00:00:15 完成 backup 於 26 - 6 月 -07 啓動 Control File and SPFILE Autobackup 於 26 - 6 月 -07 段 handle=D:\BACKUP\C-3391142503-20070704-00 comment=NONE 完成 Control File and SPFILE Autobackup 於 26 - 6 月 -07
一樣,咱們在使用backup tablespace也能夠經過顯式指定format參數自定義備份片斷名稱。
咱們再經過LIST BACKUP 查看一下備份:
RMAN> LIST BACKUP OF TABLESPACE JWEB ;
發現有兩份備份片斷,複習一下上一章的內容,刪除其中一個備份(刪除的方法很是多,下例使用刪除backupset,有心的朋友不妨本身嘗試一下經過其它方式刪除指定備份片斷)。
RMAN> DELETE BACKUPSET 18 ;
5、備份指定數據文件
首先能夠先經過數據字典DBA_DATA_FILES查詢出表空間對應的數據文件及其序號,例如:
SQL> select file_name,file_id,tablespace_name from dba_data_files
而後再經過BACKUP DATAFILE 備份指定序號的數據文件,例如:
RMAN> BACKUP DATAFILE n;
若是要查看指定數據文件的備份,能夠用:
RMAN> LIST BACKUP OF DATAFILE n;
注:n=指定的的數據文件序號,若是須要備份的數據文件有多個,n=多個序號,中間以逗號分隔便可。
6、備份控制文件
控制文件在ORACLE中的重要性是毋庸置疑的,你看,連RMAN都給予特殊的照顧,在RMAN中備份控制文件的方式是最多的。
1. 最簡單的方式,經過CONFIGURE命令將CONTROLFILE AUTOBACKUP置爲ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
而後你再經過rman作任何備份操做的同時,都會自動對控制文件作備份。
2. 在自動備份打開的狀況下,備份任意表空間操做時,RMAN均會自動對控制文件作備份。
3. 手動執行備份命令。
RMAN> BACKUP CURRENT CONTROLFILE;
4. 執行BACKUP時指定INCLUDE CURRENT CONTROLFILE參數,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
若是要查看備份的控制文件,能夠經過:
RMAN> LIST BACKUP OF CONTROLFILE;
7、備份歸檔日誌文件
歸檔日誌對於數據庫介質恢復至關關鍵,其雖然不像控制文件那樣一旦損壞則數據庫立刻崩潰但重要性絲絕不減。歸檔日誌文件能確保咱們將數據庫恢復到備份以前的任意時刻。在RMAN中備份歸檔日誌有兩種方式:
1 、利用BACKUP ARCHIVELOG命令備份
RMAN> BACKUP ARCHIVELOG ALL;
2 、在BACKUP過程當中利用PLUS ARCHIVELOG參數備份,例如:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
則在備份數據庫的同時自動對全部歸檔文件進行備份。這種方式與上種有什麼區別呢,區別太明顯了,BACKUP.....PLUS ARCHIVELOG命令在備份過程當中會依次執行下列步驟:
1>. 運行ALTER SYSTEM ARCHIVE LOG CURRENT語句對當前redolog進行歸檔。
2>. 執行BACKUP ARCHIVELOG ALL命令備份全部已歸檔日誌。
3>. 執行BACKUP命令對指定項進行備份。
4>. 再次運行ALTER SYSTEM ARCHIVE LOG CURRENT對當前redolog歸檔。
5>. 對新生成的還沒有備份的歸檔文件進行備份。
在完成歸檔日誌文件備份後,咱們經過須要刪除已備份過的歸檔文件(歸檔文件記錄下了數據庫進行過的全部操做,若是您的數據庫操做頻繁並且量大,那歸檔文件大小也是至關恐怖,備份後刪除釋放存儲空間是至關有必要地)。RMAN提供了DELETE ALL INPUT參數,加在BACKUP命令後,則會在完成備份後自動刪除歸檔目錄中已備份的歸檔日誌。
完成備份以後,能夠經過下列命令查看已備份的歸檔日誌片斷:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
綜述:上述示例中出現的命令格式較多,但細細看來是否能發現些格式上的規律?好比查看備份基本都是LIST BACKUP OF備份項名稱,若是想自定義片斷的話則在備份命令後加上FORMAT參數(後三項沒有列舉加format參的示例,你們千萬表覺得是不能夠喲,俺都說樂rman是超靈活地泥,你們必定要多多嘗試,反正執行的是備份操做不是刪除,又搞不壞目標數據庫,你還有啥可擔憂的泥)。