Oracle 10g備份與恢復高階使用者指南--第二章 RMAN備份概念

panpong發表於2016-12-31

1.   關於RMAN通道

一個RMAN通道就代表到一種裝置的資料流,和對應的伺服器會話(server session);RMAN中執行的大部分的備份與恢復命令都是透過server session完成的;


 

A.        自動分配通道

CONFIGURE DEVICE TYPE ... PARALLELISM

CONFIGURE DEFAULT DEVICE TYPE

CONFIGURE CHANNEL 

B.        手動分配通道

RUN {  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;

  BACKUP DATABASE PLUS ARCHIVELOG;

}

C.        自動通道裝置配置與並行

CONFIGURE DEVICE TYPE ... PARALLELISM

RMAN> SHOW DEVICE TYPE;

D.       自動通道預設裝置型別

CONFIGURE DEFAULT DEVICE TYPE

CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # configure device disk

CONFIGURE DEVICE TYPE sbt PARALLELISM 2; # configure device sbt

CONFIGURE DEFAULT DEVICE TYPE TO sbt;

越過預設裝置來備份

BACKUP DEVICE TYPE sbt DATABASE;

 

E.        自動通道命名約定

命名規則:ORA_devicetype_n,這個命名規則是RMAN執行,使用,不能手動更改規則;

自動維護通道的命名:ORA_MAINT_devicetype_n

(ALLOCATE CHANNEL FOR MAINTENANCE)

 

F.        自動通道一般屬性配置

CONFIGURE CHANNEL DEVICE TYPE sbt PARMS = 'ENV=(NSR_SERVER=bksvr1)';

CONFIGURE CHANNEL DEVICE TYPE DISK RATE 5M FORMAT="?/oradata/%U";

G.       指定各通道的設定:即為每個單獨的通道設定引數

  如:

CONFIGURE DEVICE TYPE DISK PARALLELISM 3;

CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE = 2M;

CONFIGURE CHANNEL 3 DEVICE TYPE DISK MAXPIECESIZE = 900K;

這個例子中,RMAN會分配ora_disk_1和ora_disk_2為MAXPIECESIZE = 2M,而ora_disk_3則為MAXPIECESIZE = 900K

H.       清除自動通道設定

CONFIGURE DEVICE TYPE DISK CLEAR; # returns DISK to default PARALLELISM 1

                                # and backup type to BACKUPSET

CONFIGURE DEFAULT DEVICE TYPE CLEAR; # returns to default device type of DISK

CONFIGURE CHANNEL DEVICE TYPE sbt CLEAR;# removes all options for sbt channel

CONFIGURE CHANNEL 3 DEVICE TYPE DISK CLEAR;# removes configurations for 3rd ch.

I.         通道並行

                      BACKUP DATAFILE 5,6,7;

相當與如下3條命令

                      BACKUP DATAFILE 5;

                      BACKUP DATAFILE 6;

                      BACKUP DATAFILE 7;

     但是,BACKUP DATAFILE 5,6,7;可以同時並行使用3條通道;而後者只是順序執行;如下同理

RUN

{

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;

  ALLOCATE CHANNEL c2 DEVICE TYPE sbt;

  ALLOCATE CHANNEL c3 DEVICE TYPE sbt;

  BACKUP DATAFILE 5;

  BACKUP DATAFILE 6;

  BACKUP DATAFILE 7;

}

 

RUN

{

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;

  ALLOCATE CHANNEL c2 DEVICE TYPE sbt;

  ALLOCATE CHANNEL c3 DEVICE TYPE sbt;

  BACKUP DATAFILE 5,6,7;

}

 

J.         渠道控制選項

主要為channel的作用,無論是man或auto channel;透過channel控制命令可以做到以下幾點:

l  控制作業系統資源,執行RMAN時;

l  影響備份或恢復並行程度;

l  限制I/O頻寬消耗在千位元組、兆位元組或位元組(allocation/configure channel…rate)       

l  限制備份件的大小(MAXPIECESIZE引數)

l  限制備份集的大小(MAXSETSIZE引數)

l  傳送特定-供應商的命令給media manager(send)

l  指定特定於供應商的引數為media manager(ALLOCATE CHANNEL ... PARMS,CONFIGURE CHANNEL ... PARMS)

l  指定哪個例項執行操作(ALLOCATE CHANNEL ... CONNECT, CONFIGURE CHANNEL ... CONNECT)

 

K.        通道失敗

當一個通道失敗,RMAN會嘗試用其他通道完成任務;如果是指令碼中的命令,則後續命令不會執行;

 

2.   關於RMAN備份

Backup命令執行備份,建立備份集和映象複製;預設情況下,無論是磁碟還是磁帶都是建立備份集;

A.        映象複製

           BACKUP AS COPY

           CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY

B.        代理複製:只適用於media管理器,不適用磁碟備份

           BACKUP DEVICE TYPE sbt PROXY DATAFILE 3;

           BACKUP DEVICE TYPE sbt PROXY ONLY DATABASE;

           BACKUP DEVICE TYPE sbt PROXY ONLY ARCHIVELOG ALL;

C.        備份儲存:磁碟、磁帶

刪除已經備份的歸檔日誌(備份後刪除歸檔日誌)

DELETE INPUT

備份歸檔日誌時的故障遷移

 

D.       多路複用備份集

      當建立備份集,您可以多路傳輸檔案。在這種情況下,RMAN從磁碟同時讀取多個檔案,然後寫他們的資料塊到相同的備份集 (映象複製image copy則從不多路複用) 。例如,RMAN可以同時讀取兩個datafiles,合併這些datafiles的資料塊到一個單一的備份片中。

決定多路複用的演算法如下:

1.每個備份集中的檔案數(每個備份集預設包括4個資料檔案或16個歸檔日誌;)

2.每個channel讀檔案數(多路複用等級是由備份集中的檔案數決定)

3.每個channel同時讀檔案數(通常為8)

 

 

E.        手動配置並行備份

  BACKUP  
(DATAFILE 1,2,3  CHANNEL ORA_DISK_1)

  (DATAFILECOPY '/tmp/system01.dbf', '/tmp/tools01.dbf' CHANNEL ORA_DISK_2)

  (ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 102 THREAD 1 CHANNEL ORA_DISK_3);

 

RUN

{

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS="ENV=(BACKUP_SERVER=tape_server1)";

  ALLOCATE CHANNEL c2 DEVICE TYPE sbt PARMS="ENV=(BACKUP_SERVER=tape_server2)";

  ALLOCATE CHANNEL c3 DEVICE TYPE sbt PARMS="ENV=(BACKUP_SERVER=tape_server3)";

  BACKUP (DATAFILE 1,2,3 CHANNEL c1)

   (DATAFILECOPY '/tmp/system01.dbf', '/tmp/tools01.dbf' CHANNEL c2)

   (ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 102 THREAD 1 CHANNEL c3);

}

 

3.   RMAN備份的多複製

A.   雙重備份集

      方法有三:

      1.CONFIGURE... BACKUP COPIES

      2. Use SET BACKUP COPIES in a RUN block

      3. BACKUP DEVICE TYPE DISK COPIES 3 DATAFILE 7 FORMAT '/tmp/%U','?/oradata/%U','?/%U';

 

B.    備份備份集(BACKUP BACKUPSET)

特別適用以下2種情況:

一是磁碟、磁帶中都需要儲存備份

二是為釋放磁碟空間,將備份集轉移到磁帶上

# makes backup sets on disk

BACKUP DEVICE TYPE DISK AS BACKUPSET DATABASE PLUS ARCHIVELOG;

BACKUP DEVICE TYPE sbt BACKUPSET ALL; # copies backup sets on disk to tape

BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;

BACKUP DEVICE TYPE sbt BACKUPSET COMPLETED BEFORE 'SYSDATE-7' DELETE INPUT;

BACKUP BACKUPSET 872;

C.   備份映象複製

BACKUP AS COPY COPY OF DATABASE

BACKUP AS BACKUPSET COPY OF TABLESPACE tablespace_name

BACKUP AS BACKUPSET COPY OF DATAFILE datafile

 

4.   RMAN備份選項:naming,sizing,speed

A.   備份片的檔名

RMAN自定檔名:

BACKUP TABLESPACE users;

指定檔名格式:

BACKUP TABLESPACE users FORMAT = '/tmp/users_%u%p%c';

B.    映象複製檔名

RMAN可以透過FORMAT 或DB_FILE_NAME_CONVERT指定映象複製檔名;

FORMAT:預設格式為%U

Type of File

Meaning of %U

Datafile

data-D-%d_id-%I_TS-%N_FNO-%f_%u

Archived log

arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u

Control file

cf-D_%d-id-%I_%u

DB_FILE_NAME_CONVERT:

Users字首的檔案轉換成users_ts 為字首的檔案:

BACKUP AS COPY TABLESPACE users  DB_FILE_NAME_CONVERT = ('/maindisk/oradata/users' , '/backups/users_ts');

C.   用Tag唯一標示RMAN備份

不指定tag,rman會給每個備份一個預設tag名,格式:TAGYYYYMMDDTHHMMSS

BACKUP COPIES 1 DATAFILE 7 TAG foo;

BACKUP AS COPY TAG users_tools TABLESPACE users, tools;

BACKUP AS COPY COPY OF DATABASE FROM TAG=full_cold_copy     TAG=new_full_cold_copy;

BACKUP AS BACKUPSET TAG for_audit COPY OF TABLESPACE users FROM TAG monday_users TABLESPACE SYSTEM FROM TAG monday_system;

標籤(tag)可以不是唯一的;

D.   備份片尺寸

備份中如果不指定備份片的尺寸,預設將所有備份內容裝載到一個備份片中;有時候由於檔案系統或media管理器的限制,需要指定size;通常在CONFIGURE CHANNEL or ALLOCATE CHANNEL中指定maxpiecesize選項;

CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE = 2G;

BACKUP AS BACKUPSET DATAFILE 1;

E.    備份集的大小與數量

a)     由backupSpec子句指定input檔案數

b)     通道數量由allocate指定

c)     每個備份集的預設檔案數為:資料檔案4個,歸檔日誌16;

d)     單個通道同步讀檔案數預設為8

e)     MAXSETSIZE引數指定備份集的大小

f)      RMAN會自動平均分配每個通道的工作量(通道負載均衡)

F.    MAXSETSIZE引數:設定備份集的最大值,間接限制備份集的檔案數,並當備份集超過最大值後,RMAN會強制建立新的備份集;如果單個資料檔案大於MAXSETSIZE值,則備份失敗,所以請確保MAXSETSIZE大於單備份檔案;

BACKUP DATABASE MAXSETSIZE = 10M;

G.   備份的IO讀寫速率控制

預設情況下,rman會利用所有可用IO頻寬進行磁碟讀寫;如果你需要限制IO讀寫資源的消耗,可以在ALLOCATE CHANNEL 或 CONFIGURE CHANNEL命令中指定rate選項;例如

CONFIGURE DEVICE TYPE sbt PARALLELISM 2;

CONFIGURE DEFAULT DEVICE TYPE TO sbt;

CONFIGURE CHANNEL DEVICE TYPE sbt RATE 1M;

 

5.   RMAN備份型別

l  全備份:所有資料檔案的對應資料塊的備份

l  增量備份:分0級備份、1級備份;0級備份就是全備份,只是在RMAN資料庫中被記錄為增量備份;1級備份是指在0級備份的基礎上,對所有改變的資料塊的備份(0級備份就是1級備份的父備份);

l  熱備份:資料庫處於online,讀寫狀態的備份

l  冷備份:資料庫處於mounted狀態時,對資料庫任何部分的備份;

l  一致性備份:正常關閉資料庫後的備份;此時資料檔案中的檢查點SCN與控制檔案中的頭資訊一致;一致性備份不需要recovery就能restore還原,但之後必須執行OPEN RESETLOGS

l  非一致性備份:資料庫online,read/write中,或意外、強制關閉下的備份;

A.        增量備份

      增量備份只備份自上次備份以來發生改變的資料塊;透過增量備份可以備份資料檔案,表空間和全庫;在恢復時,RMAN會檢測還原的檔案是否需要增量備份恢復;在恢復時,RMAN會盡量選擇增量備份恢復,而不是選擇歸檔日誌恢復,因為增量備份恢復速度更快(增量備份是塊級恢復,而歸檔日誌是記錄級恢復);

      在恢復時,可以在還原非增量備份的映象複製檔案後,利用其他增量備份進行恢復;

      增量備份方便快速的日常備份;它使用較少的頻寬,在磁帶IO頻寬限制備份效能時提供更好地效能;利用增量備份恢復資料庫時不會記錄redo日誌,類似直接路徑載入;最後,增量備份還支援noaruchivelog資料庫備份,並且其全庫備份檔案大小要小於資料庫檔案(當然, 需要一個乾淨的資料庫關閉);

      推薦增量備份策略:增量備份映象檔案到磁碟,然後將這些映象檔案備份成備份集(backup as backupset )到磁帶上;

      增量備份原理:資料檔案中的每個資料塊都包含一個SCNsystem change number),這個SCN代表著資料塊最近一次修改序號;增量備份時,RMAN會讀每個input資料檔案中資料塊的SCN(如果啟用資料塊更改跟蹤,則RMAN不會讀沒有改變的資料塊),然後與父親增量備份中checkpoint SCN比較,如果資料塊中SCN大於或等於父親增量備份中checkpoint SCN,則備份該資料塊;

      因此,增量備份能恢復所有變化的資料塊,即使是在某物件建立中使用了nologging選項的操作;這一機制的推論:利用增量備份的恢復可以防止由於使用nologging選項的操作而丟失資料;

 

0級備份:類全備份

1級備份:分差異備份、累積備份

         差異備份:是在0級或1級備份基礎上的增量備份;

         累積備份:是在0級基礎上的增量備份;

 

Level 0 級是各增量備份的基礎,那level 1 與level 2有什麼不同呢?

分兩種情況,incremental different的和cumulitive的,前者備份跟自己同級或比自己級別低的,後者只備份比自己級別低的

 前者:level1備份上一次level1或level0以來的變化,level2備份上一次level2或level1或level0以來的變化

後者:level1備份上一次level0以來的變化,level2備份上一次level1或level0以來的變化

10G文件中已經沒有level 2備份了,更沒有level 3以上的備份;但是在RMAN命令中可以使用

Rman>backup incremental level 2 cumulative format='d:\backup$d_%s.dbf' tablespace users;

Rman>backup incremental level 2 format='d:\backup$d_%s.dbf' tablespace users;

 

Figure:Differential Incremental Backups


 

Figure :Cumulative Incremental Backups


B.        計劃增量備份策略

一般資料塊累積更新20%以上要做一全備份或0級增量備份;

SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME, BLOCKS, DATAFILE_BLOCKS

  FROM V$BACKUP_DATAFILE

 WHERE INCREMENTAL_LEVEL > 0

   AND BLOCKS / DATAFILE_BLOCKS > .5

 ORDER BY COMPLETION_TIME;

 

Control file 與spfile 自動備份

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

RESTORE CONTROLFILE FROM AUTOBACKUP;

自動備份on時,備份包含資料檔案,則cf、spfile與備份集分開;

自動備份off時,備份包含資料檔案,則cf、spfile與備份集在一起;

什麼時候自動備份cf:

A.        RMAN執行backup時

B.        RUN塊中,最後命令是backup時

C.        RUN塊中,backup命令後面再沒有backup命令時

D.       資料庫結構改變時;如,新增表空間,表空間或資料檔案狀態改變,重新命名檔案,新增redolog等等

6.   備份的保留策略

   Obsolete與expired的區別:簡而言之就是obsolete不需要的,expired是沒有找到的;

      The term obsolete does not mean the same as expired. A backup is obsolete when REPORT OBSOLETE or DELETE OBSOLETE determines, based on the user-defined retention policy, that it is not needed for recovery. A backup is considered expired only when RMAN performs a crosscheck and cannot find the file. In short, obsolete means "not needed," whereas expired means "not found."

保留策略:redundancy (冗餘)、recovery window(恢復視窗)

如果不指定保留策略,則預設REDUNDANCY 1

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW

CONFIGURE RETENTION POLICY TO REDUNDANCY

不設定保留策略:則RMAN認為所有的備份都是需要的;

CONFIGURE RETENTION POLICY TO NONE;

A.            Recovery window(恢復視窗)

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

B.        redundancy (冗餘):預設冗餘為1;

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

不設定保留策略:則RMAN認為所有的備份都是需要的;

CONFIGURE RETENTION POLICY TO NONE;

C.        批次刪除obsolete備份

REPORT OBSOLETE

DELETE OBSOLETE

D.       保留策略外的免除備份(特別保留備份)

KEEP UNTIL TIME... LOGS/NOLOGS

# Creates a backup and exempts it from retention policy until last day of 2007

BACKUP DATABASE KEEP UNTIL TIME "TO_DATE('31-DEC-2007' 'dd-mon-yyyy')" NOLOGS;

# Specifies that backupset 2 is no longer exempt from the retention policy

CHANGE BACKUPSET 2 NOKEEP;

# Creates a backup that is indefinitely exempt from the retention policy

BACKUP TABLESPACE users KEEP FOREVER NOLOGS;

 

7.   最佳化備份OPTIMIZATION ON:同一個檔案如果已經備份則backup會跳過;

同一檔案是指:

Datafile :相同的dbid,checkpoint SCN,creation SCN, RESETLOGS SCN 、 time as a datafile already in a backup

Archived redo log:相同的 thread、sequence number、RESETLOGS SCN 、time.

Backup set:相同的backup set recid and stamp.

 

RMAN> CONFIGURE BACKUP OPTIMIZATION OFF/ON;

BACKUP DEVICE TYPE sbt DATABASE PLUS ARCHIVELOG;

BACKUP DEVICE TYPE sbt BACKUPSET ALL;

BACKUP DEVICE TYPE sbt BACKUPSET ALL FORCE;

RMAN> CONFIGURE BACKUP OPTIMIZATION OFF/ON;

 

 

8.   可重新啟動的備份(restartable backups

使用可重啟動備份特性,RMAN可以備份一個指定時間以來的所有沒有備份的檔案;

BACKUP DATABASE NOT BACKED UP SINCE TIME 'SYSDATE-1';

#該命令將備份一天內所有沒有備份的資料庫檔案;如果不指定SINCE TIME則備份所有從沒有備份的檔案

 

9.   管理備份視窗和效能:BACKUP…DURATION

  Backup window 是指備份活動必須在一個時間段內完成的時間區間;

例如:BACKUP DURATION 4:00 TABLESPACE users;

#該命令在4個小時內完成users表空間的備份;

如果在指定的Backup window內沒有完成備份,備份命令將被強制中斷;已經完成的備份集被保留,並能夠用於還原與恢復;未完成的備份集則被丟棄;

A.        partial選項

DURATION,超出備份視窗時,通常會report 一個錯誤(如果是run block則停止後面的執行);當partial後,則不會報錯,而是顯示未備份完的檔案資訊;而如果是在run block 中則繼續執行後面的命令;

BACKUP DURATION 4:00 PARTIAL TABLESPACE users FILESPERSET 1;

 

FILESPERSET選項, RMAN puts each file into its own backupset;如果timeout,則只有當前正在備份的檔案丟失;

 

B.        用MINIMIZE TIME、MINIMIZE LOAD管理備份效能

#最短時間內完成備份

BACKUP DURATION 4:00 PARTIAL MINIMIZE TIME DATABASE FILESPERSET 1;

#最小負載,最小影響系統完成

BACKUP DURATION 4:00 PARTIAL MINIMIZE LOAD DATABASE FILESPERSET 1;

 

10. RMAN對備份錯誤的反應

l  I/O錯誤

l  壞塊(corrupt blocks)

A.        處理RMAN備份中的I/O錯誤:NOT BACKED UP SINCE 

B.        處理RMAN備份中資料檔案壞塊:MAXCORRUPT

如果備份中,壞塊已經被識別,則備份包含壞塊在內的資料;如果壞塊先前沒有被識別出來,則RMAN預設會stop備份;

      #SET MAXCORRUPT命令只在run block中使用;

設定MAXCORRUPT後,RMAN備份中遇到先前未被檢測出來的壞塊時,則被忽略;允許忽略的壞塊數由MAXCORRUPT決定;

如果備份中沒有超過MAXCORRUPT數,備份順利完成,並且記錄這些壞塊頭資訊到control file 中;同時也可以透過V$DATABASE_BLOCK_CORRUPTION檢視查詢壞塊情況

 

11. 對備份進行一致性稽核與測試

 

A.        測試備份與還原的有效性:BACKUP VALIDATE、RESTORE VILIDATE

不建立輸出檔案測試備份有效性;用這種方法,可以check所有資料檔案問題;按如下步驟,則可以檢測所有型別的可能的corrupt:

a)    初始化引數,DB_BLOCK_CHECKSUM=TRUE;

b)   RMAN命令中,不要指定MAXCORRUPT、NOCHECKSUM選項,但是要指定CHECK LOGICAL選項;

 

B.        檢測物理壞塊:BACKUP…VALIDATE

C.        檢測邏輯壞塊(CHECK LOGICAL)

D.       在開啟backups時,檢測斷裂塊(fractured blocks)

E.        用RMAN確認備份

利用BACKUP…VALIDATE命令check資料檔案的物理或邏輯壞塊,或者是確認所有資料檔案在正確的位置上;

下面的例子展示了對整個資料庫和歸檔日誌檔案的物理或邏輯壞塊稽核;

BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;

Validate選項不能與MAXCORRUPT 、PROXY 引數一起使用;

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

相關文章