1. 程式人生 > 實用技巧 >RMAN備份須知(一)

RMAN備份須知(一)

1.RMAN備份環境

RMAN備份與恢復至少有以下兩部分組成:

ComponentDescription

Targetdatabase

主要備份資料檔案、控制檔案、歸檔日誌檔案

RMANclient

主要完成對TargetDatabase的備份和恢復,通過ORACLENET實現與TargetDatabase的連線

2.RMAN分配通道

RMAN支援兩種備份裝置:SBT和DISK,分配通道都是基於裝置做分配,RMAN通道實質是一個到儲存裝置的資料流。

wKioL1NF9riTzTZaAACWOnMOjUs082.jpg

1)RMAN手動分配通道

ALLOCATECHANNEL命令在RUN塊中執行,在執行BACKUP、RESTORE等需要進行磁碟I/O操作的命令時,可以將他們放在一個RUN塊中執行,ALLOCATECHANNEL為它們分配通道。

示例:

RMAN>RUN{

2>ALLOCATECHANNELC1DEVICETYPEDISKFORMAT'/u01/app/RMAN_BK/cn_%u';

3>BACKUPTABLESPACEUSERS;

}

批註:RMAN中執行的每一條BACKUP、RECOVER等命令都至少要求使用一個通道,通道數決定了這些操作執行的並行度,每條ALLOCATECHANNEL命令對應一個通道,如果需要多個通道,執行多條ALLOCATECHANNEL。

2)RMAN自動分配通道

RMAN分配根據這些命令中的設定自動通道:

  • CONFIGUREDEVICETYPE...PARALLELISM

  • CONFIGUREDEFAULTDEVICETYPE

  • CONFIGURECHANNEL

示例:如果沒有手動分配通道,RMAN將會自動分配通道,如下:

RMAN>BACKUPDATAFILE3;
RMAN>RESTORETABLESPACEusers;

3.AutomaticChannelDeviceConfigurationandParallelism(自動通道配置和並行度)

使用SHOWDEVICETYPE檢視預設通道並行度,如下:

RMAN>SHOWDEVICETYPE;

usingtargetdatabasecontrolfileinsteadofrecoverycatalog
RMANconfigurationparametersare:

CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;#default

配置預設裝置SBT,如下:

RMAN>CONFIGUREDEFAULTDEVICETYPETOsbt;

newRMANconfigurationparameters:
CONFIGUREDEFAULTDEVICETYPETO'SBT_TAPE';
newRMANconfigurationparametersaresuccessfullystored

RMAN>SHOWDEVICETYPE;

RMANconfigurationparametersare:
CONFIGUREDEVICETYPESBT_TAPEPARALLELISM1BACKUPTYPETOBACKUPSET;#default
CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;#default

通過自動分配通道執行CONFIGUREDEFAULTDEVICETYPE指定預設裝置型別。例如可以將大部分時間備份到磁碟,偶爾備份到磁帶。

示例:

RMAN>CONFIGUREDEVICETYPEDISKPARALLELISM1;

RMAN>CONFIGUREDEVICETYPEsbtPARALLELISM2;

RMAN>CONFIGUREDEFAULTDEVICETYPETODISK;

RMAN>showDEVICETYPE;

RMANconfigurationparametersare:
CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;
CONFIGUREDEVICETYPE'SBT_TAPE'PARALLELISM2BACKUPTYPETOBACKUPSET;

設定完成之後,RMAN將使用磁碟通道進行備份資料,如下:

RMAN>BACKUPTABLESPACEusers;

Startingbackupat30-DEC-13
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=124devtype=DISK
channelORA_DISK_1:startingfulldatafilebackupset
channelORA_DISK_1:specifyingdatafile(s)inbackupset
inputdatafilefno=00004name=/u01/app/oradata/orcl/users01.dbf
channelORA_DISK_1:startingpiece1at30-DEC-13
channelORA_DISK_1:finishedpiece1at30-DEC-13
piecehandle=/u01/app/flash_recovery_area/ORCL/backupset/2013_12_30/o1_mf_nnndf_TAG20131230T055611_9d16mvjn_.bkptag=TAG20131230T055611comment=NONE
channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:07
Finishedbackupat30-DEC-13

4.ImageCopies(映象拷貝)
ImageCopies是指使用作業系統命令精確的拷貝單個的資料檔案、歸檔日誌檔案或控制檔案。RMAN可以使用ImageCopies修復和恢復操作。

1)UsingRMAN-CreatedImageCopies

如果需要執行修復命令,通過將映像副本拷貝到原先控制檔案或資料檔案的位置。如果存在當前的資料檔案映像副本在磁碟上,那麼將不需要將映像副本放入原先的位置,可以使用映像副本直接對資料檔案進行修復。

2)User-ManagedImageCopies

RMAN可以使用RMAN以外的機制管理映像副本,如本地作業系統檔案複製命令或第三方工具。

3)ProxyCopies(代理拷貝)

Proxycopycanbeusedwithdatafilesorarchivedredologs,asshownintheseexamples:

BACKUPDEVICETYPEsbtPROXYDATAFILE3;
BACKUPDEVICETYPEsbtPROXYONLYDATABASE;
BACKUPDEVICETYPEsbtPROXYONLYARCHIVELOGALL;

5.StorageofBackupsonDiskandTape(儲存備份資料)
BackupsofArchivedLogs(備份歸檔日誌)

1)BackupFailoverforArchivedRedoLogs(備份失效歸檔日誌)

RMAN的歸檔重做日誌故障轉移允許RMAN完成備份,即使一些歸檔日誌檔案丟失或損壞。

2)MultiplexedBackupSets(複用備份)

RMAN中提供了三種方式實現Duplexed方式備份:

  • 通過CONFIGURE...BACKUPCOPIES命令設定預定義的備份Duplexed方式

CONFIGURE...BACKUPCOPIES命令可以為指定的裝置型別設定預設的備份複製數量。這個配置僅適用於資料檔案與歸檔重做日誌檔案和備份,並且,只有在使用自動分配的通道時才能夠使用CONFIGURE...BACKUPCOPIES命令設定的配置,如下:

RMAN>CONFIGUREDEFAULTDEVICETYPETODISK;
RMAN>CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO2;
RMAN>CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO2;

批註:上述命令將DISK裝置上的資料檔案與歸檔檔案的複製數量設定為2,當再次執行BACKUPDATABASE命令時,如果沒有通過ALLCOATECHANNEL分配通道,那麼建立的備份集會自動生成2份備份集。

  • 利用SETBACKUPCOPIES命令指定複用備份

在RUN{}命令塊中利用SETBACKUPCOPIES命令為該命令塊中所有的BACKUP命令設定Duplexed方式,如下:

RMAN>RUN{
2>SETBACKUPCOPIES2;
3>BACKUPDEVICETYPEDISKTABLESPACEUSERSFORMAT'/u01/app/RMAN_BK/USER01_%U','/u01/app/RMAN_BK/USER02_%U';
4>}

executingcommand:SETBACKUPCOPIES

Startingbackupat30-DEC-13
usingchannelORA_DISK_1
channelORA_DISK_1:startingfulldatafilebackupset
channelORA_DISK_1:specifyingdatafile(s)inbackupset
inputdatafilefno=00004name=/u01/app/oradata/orcl/users01.dbf
channelORA_DISK_1:startingpiece1at30-DEC-13
channelORA_DISK_1:finishedpiece1at30-DEC-13with2copiesandtagTAG20131230T102638
piecehandle=/u01/app/RMAN_BK/USER01_1uosq6uv_1_1comment=NONE
piecehandle=/u01/app/RMAN_BK/USER02_1uosq6uv_1_2comment=NONE
channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:15
Finishedbackupat30-DEC-13

  • 執行BACKUP命令時指定複合備份

在RMAN中執行BACKUP命令時顯式指定COPIES引數,如下:

RMAN>BACKUPDEVICETYPEDISKCOPIES3DATAFILE4FORMAT'/u01/app/RMAN_BK/bk1_%u','/u01/app/RMAN_BK/bk2_%u','/u01/app/RMAN_BK/bk3_%U';

Startingbackupat30-DEC-13
usingchannelORA_DISK_1
channelORA_DISK_1:startingfulldatafilebackupset
channelORA_DISK_1:specifyingdatafile(s)inbackupset
inputdatafilefno=00004name=/u01/app/oradata/orcl/users01.dbf
channelORA_DISK_1:startingpiece1at30-DEC-13
channelORA_DISK_1:finishedpiece1at30-DEC-13with3copiesandtagTAG20131230T102010
piecehandle=/u01/app/RMAN_BK/bk1_1tosq6iqcomment=NONE
piecehandle=/u01/app/RMAN_BK/bk2_1tosq6iqcomment=NONE
piecehandle=/u01/app/RMAN_BK/bk3_1tosq6iq_1_3comment=NONE
channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:25
Finishedbackupat30-DEC-13

3)BackupsofBackupSets(設定備份集)

  • 設定備份片段名

RMAN預設通道分配時指定了一個引數值為%F的FORMAT引數。

分配通道時指定備份片段名格式,示例如下:

RMAN>RUN{
2>ALLOCATECHANNELC1DEVICETYPEDISKFORMAT'/u01/app/RMAN_BK/BACKUP_%U';
3>BACKUPTABLESPACEUSERS;
4>}

releasedchannel:ORA_DISK_1
allocatedchannel:C1
channelC1:sid=124devtype=DISK

Startingbackupat30-DEC-13
channelC1:startingfulldatafilebackupset
channelC1:specifyingdatafile(s)inbackupset
inputdatafilefno=00004name=/u01/app/oradata/orcl/users01.dbf
channelC1:startingpiece1at30-DEC-13
channelC1:finishedpiece1at30-DEC-13with2copiesandtagTAG20131230T104049
piecehandle=/u01/app/RMAN_BK/BACKUP_1vosq7ph_1_1comment=NONE
piecehandle=/u01/app/RMAN_BK/BACKUP_1vosq7ph_1_2comment=NONE
channelC1:backupsetcomplete,elapsedtime:00:00:15
Finishedbackupat30-DEC-13
releasedchannel:C1

  • 設定備份集標籤

備份時可以直接給備份集指定一個名稱(TAG),RMAN預設生成TAG格式為TAGyyyymmddThhmmss,其中TAG和T是固定字元,yyyymmddhhmmss對應執行備份操作的時間。

可以自己為備份集指定標籤,示例如下:

RMAN>BACKUPTABLESPACEUSERSTAGTBS_USRESBAKFORMAT'/u01/app/RMAN_BK/USER_%U';

Startingbackupat30-DEC-13
usingchannelORA_DISK_1
channelORA_DISK_1:startingfulldatafilebackupset
channelORA_DISK_1:specifyingdatafile(s)inbackupset
inputdatafilefno=00004name=/u01/app/oradata/orcl/users01.dbf
channelORA_DISK_1:startingpiece1at30-DEC-13
channelORA_DISK_1:finishedpiece1at30-DEC-13with2copiesandtagTBS_USRESBAK
piecehandle=/u01/app/RMAN_BK/USER_21osq86r_1_1comment=NONE
piecehandle=/u01/app/RMAN_BK/USER_21osq86r_1_2comment=NONE
channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:07
Finishedbackupat30-DEC-13

批註:TAG標籤也可以視為備份集的別名。

  • 設定備份片段/備份集大小

RMAN在分配通道時有一個引數MAXPIECESIZE,用來指定備份片段的大小。示例,備份SYSTEM表空間,指定單個備份片段最大不能超過100M,如下:

RMAN>RUN{
2>ALLOCATECHANNELC2DEVICETYPEDISKMAXPIECESIZE=100MFORMAT'/u01/app/RMAN_BK/SYSTEM_%U';
3>BACKUPTABLESPACESYSTEM;
4>}

releasedchannel:ORA_DISK_1
allocatedchannel:C2
channelC2:sid=124devtype=DISK

Startingbackupat30-DEC-13
channelC2:startingfulldatafilebackupset
channelC2:specifyingdatafile(s)inbackupset
inputdatafilefno=00001name=/u01/app/oradata/orcl/system01.dbf
channelC2:startingpiece1at30-DEC-13
channelC2:finishedpiece1at30-DEC-13with2copiesandtagTAG20131230T105541
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_1_1comment=NONE
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_1_2comment=NONE
channelC2:startingpiece2at30-DEC-13
channelC2:finishedpiece2at30-DEC-13with2copiesandtagTAG20131230T105541
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_2_1comment=NONE
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_2_2comment=NONE
channelC2:startingpiece3at30-DEC-13
channelC2:finishedpiece3at30-DEC-13with2copiesandtagTAG20131230T105541
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_3_1comment=NONE
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_3_2comment=NONE
channelC2:startingpiece4at30-DEC-13
channelC2:finishedpiece4at30-DEC-13with2copiesandtagTAG20131230T105541
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_4_1comment=NONE
piecehandle=/u01/app/RMAN_BK/SYSTEM_22osq8ld_4_2comment=NONE
channelC2:backupsetcomplete,elapsedtime:00:00:45
channelC2:startingfulldatafilebackupset
channelC2:specifyingdatafile(s)inbackupset
includingcurrentcontrolfileinbackupset
includingcurrentSPFILEinbackupset
channelC2:startingpiece1at30-DEC-13
channelC2:finishedpiece1at30-DEC-13with2copiesandtagTAG20131230T105541
piecehandle=/u01/app/RMAN_BK/SYSTEM_23osq8mq_1_1comment=NONE
piecehandle=/u01/app/RMAN_BK/SYSTEM_23osq8mq_1_2comment=NONE
channelC2:backupsetcomplete,elapsedtime:00:00:03
Finishedbackupat30-DEC-13
releasedchannel:C2

檢視備份目錄,生成了如下備份檔案:

[[email protected]RMAN_BK]$ll

-rw-r-----.1oracleoinstall104857600Dec3010:55SYSTEM_22osq8ld_1_1(104857600/1024/1024=100M)
-rw-r-----.1oracleoinstall104857600Dec3010:55SYSTEM_22osq8ld_1_2
-rw-r-----.1oracleoinstall104857600Dec3010:56SYSTEM_22osq8ld_2_1
-rw-r-----.1oracleoinstall104857600Dec3010:56SYSTEM_22osq8ld_2_2
-rw-r-----.1oracleoinstall104857600Dec3010:56SYSTEM_22osq8ld_3_1
-rw-r-----.1oracleoinstall104857600Dec3010:56SYSTEM_22osq8ld_3_2
-rw-r-----.1oracleoinstall74563584Dec3010:56SYSTEM_22osq8ld_4_1
-rw-r-----.1oracleoinstall74563584Dec3010:56SYSTEM_22osq8ld_4_2
-rw-r-----.1oracleoinstall7208960Dec3010:56SYSTEM_23osq8mq_1_1
-rw-r-----.1oracleoinstall7208960Dec3010:56SYSTEM_23osq8mq_1_2

不僅可以指定備份片段的大小,也可以指定備份集的大小,單個備份集的最大值可以在執行備份命令(或分配通道)時通過MAXSETSIZE引數指定,示例如下:

RMAN>BACKUPDATABASEMAXSETSIZE=100M;

MAXSETSIZE引數指定的是單個備份集的最大值,與備份片段無關,不過預設情況下,一個備份集對應一個備份片段,因此也相當於指定了備份片段的大小,但是直接指定MAXSETSIZE引數限定備份集大小並非在所有情況下都實用,如果要備份的資料檔案中,任意一個數據檔案超出了指定引數值,則備份就會失敗。對於實際應用中,需要限制生成檔案大小的情況,更多會通過MAXSETSIZE引數限制備份片段,而不會直接限制備份集。

4)是否使用RMAN恢復目錄(RecoveryCatalog)

當沒有恢復目錄時,RMAN相關的備份資訊,比如歸檔檔案路徑、備份集路徑等均儲存在目標資料庫的控制檔案中。RMAN提供了CREATECATALOG命令,再建立恢復目錄之前,需要對為該目錄建立一個獨立表空間和對應的SCHEMA,步驟如下:

1.建立一個獨立表空間

SQL>CREATETABLESPACERMANTBSDATAFILE'/u01/app/oradata/RMANDB/rmantbs01.dbf'size100M;

Tablespacecreated.

批註:不要把恢復目錄建立在要備份的目錄資料庫

2.建立一個獨立的SCHEMA,用來記錄備份資訊,並授予相關許可權

SQL>GRANTCONNECT,RESOURCE,RECOVERY_CATALOG_OWNERTORMANCTIDENTIFIEDBYRMANCT;

Grantsucceeded.

3.通過RMAN連線到新建立的恢復目錄中

[[email protected]~]$rmancatalogrmanct/rmanct

RecoveryManager:Release10.2.0.1.0-ProductiononMonDec3011:56:442013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

connectedtorecoverycatalogdatabase

RMAN>

4.在RMAN中建立catalog

RMAN>CREATECATALOGTABLESPACERMANTBS;
recoverycatalogcreated
這樣恢復目錄就建立完了,一個恢復目錄資料庫可以同時為多個目標資料庫提供服務,不要要使用恢復目錄執行備份操作前,首先需要在恢復目錄中註冊該資料庫。

註冊資料庫步驟如下:

1.首先以catalog模式連線到目標資料庫和恢復目錄

[[email protected]~]$rmantarget/catalogrmanct/[email protected]

RecoveryManager:Release10.2.0.1.0-ProductiononMonDec3012:01:372013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

connectedtotargetdatabase:ORCL(DBID=1362151472)
connectedtorecoverycatalogdatabase

2.通過如下命令註冊資料庫

RMAN>REGISTERDATABASE;

databaseregisteredinrecoverycatalog
startingfullresyncofrecoverycatalog
fullresynccomplete

之後進行的操作,比如建立備份等操作資訊都會存入恢復目錄中。

批註:若要將已經註冊到catalog中的資料庫取消註冊,如下操作:

RMAN>UNREGISTERDATABASE;

databasenameis"ORCL"andDBIDis1362151472

Doyoureallywanttounregisterthedatabase(enterYESorNO)?YES
databaseunregisteredfromtherecoverycatalog

參考與《塗抹ORACLE》、ORACLE10g官方文件

轉載於:https://blog.51cto.com/dayong2015/1393305