第三篇 RMAN備份演練初級篇--轉自君三思

前面我們已經知道了如何進入rman,以及rman的一些基本命令,相信大家定會覺着rman操作的簡單,事實也確實如此,但萬不要因此小視rman的強大,簡單往往意味着靈活,靈活對於那些有心人則意味着主動權盡在掌握。

一、RMAN備份形式

  1、鏡像複製(Image Copies)

  鏡像複製實際上就是數據文件、控制文件或歸檔文件的複製,與用戶通過操作系統命令建立的文件複製實質一樣,只不過RMAN是利用目標數據庫中的服務進程來完成文件複製,而用戶則是用操作系統命令。所以鏡像複製的方式體現不出RMAN的優勢,也並非我們討論的重點,大家瞭解一下即可(啥?想知道鏡像複製咋用?卡,問村長去~~~~~)。

  2、備份集(Backup Sets)

  備份集是通過RMAN創建的邏輯備份對象。一個備份集中可以包含多個數據文件、控制文件或歸檔文件。備份集在物理上是由多個備份片段組成,每個備份片段是一個操作系統文件。

二、RMAN命令執行方式

  在進入演練之前,大家還有必要了解運行rman命令的方式,就目前已知的情況,共有4種運行方式。

  1、單個執行(沒啥說的,之前的示例都是這種方式)

  • RMAN> backup database ;

  2、批處理(呵呵,跳票的補上)

RMAN> RUN{

.......................

.......................

}

  批處理方式實質是將原來單個執行的命令組合到一起,並放在run{}之間,這種方式最大的好處是所有在run中的命令被視爲一個作業,如果作業中任何一條命令執行失敗,則整個命令停止執行,即失敗命令後的其它命令都不會再被執行。這種方式是最常使用的方式,特別對於後臺執行。

  3、運行腳本(又能細分爲幾種方式如下:)

C:\ > rman TARGET / @backup_db.rman

RMAN> @backup_db.rman

RMAN> RUN { @backup_db.rman }

  運行存儲在恢復目錄中的腳本(需要首先爲rman創建恢復目錄)

  • RMAN> RUN { EXECUTE SCRIPT backup_whole_db };

  看看,夠靈活吧。

  4、操作系統腳本(linux,windows環境下小有差異,但只是操作系統命令的不同)

  • C:\ > rman cmdfile=backup_db.rman

  明眼人看的出來,後兩種其實是前面兩種加上操作系統命令的綜合應用。

三、對數據庫進行全備

  1、使用backup database命令執行備份

  • RMAN> BACKUP DATABASE;

  執行上述命令後將對目標數據庫中的所有數據文件進行備份,由於沒有顯式指定FORMAT參數,rman會自動爲每個備份片段命名,並保存在ORACLE_HOME/database目錄下。

  當然,也可以通過顯式指定format參數來自定義備份片段的命令規則,比如:

  • RMAN> BACKUP DATABASE FORMAT ¨D:\BACKUP\%U¨;

  ( 關於%U的格式說明,請參考本篇外傳。Ooo,外傳好像還沒寫,沒關係沒關係,大家表着急,我保證大家在有生之年一定等的到的。)

  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;

四、備份表空間

  只要實例啓動並處於加載狀態,不論數據庫是否打開,都可以在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 ;

  發現有兩份備份片段,複習一下2章的內容,刪除其中一個備份(刪除的方法非常多,下例使用刪除backupset,有心的朋友不妨自己嘗試一下通過其它方式刪除指定備份片段)。

  • RMAN>  DELETE BACKUPSET 18 ;

五、備份指定數據文件

  首先可以先通過數據字典DBA_DATA_FILES查詢出表空間對應的數據文件及其序號,例如:

  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=多個序號,中間以逗號分隔即可。

六、備份控制文件

  控制文件在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;

七、備份歸檔日誌文件

  歸檔日誌對於數據庫介質恢復相當關鍵,其雖然不像控制文件那樣一旦損壞則數據庫馬上崩潰但重要性絲毫不減。歸檔日誌文件能確保我們將數據庫恢復到備份之前的任意時刻。在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是超靈活地泥,大家一定要多多嘗試,反正執行的是備份操作不是刪除,又搞不壞目標數據庫,你還有啥可擔心的泥)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章