忽悠
人間自有正義在,處處盛開自由花
三思也來玩布道,忽悠一家是一家
前篇介紹了通過rman進行各種備份,進階篇則主要是rman的一些功能擴展和增加功能,利用前篇你已經完全可以完成數據庫的備份,而通過本篇你可以更好更方便的完成數據庫的備份。
一、建立增量備份
如果數據庫運行於不歸檔模式下,那麼你只能在數據庫干淨關閉的情況下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式關閉)才能進行一致性的增量備份,如果數據庫運行於歸檔模式下,那即可以在數據庫關閉狀態進行,也可以在數據庫打開狀態進行備份。再次說明了打開歸檔模式的優勢,歸檔日志也就是多占些磁盤空間,好處不是一些是很多,可是也相當於又給數據庫加了層保險啊。
建立增量備份也是相當簡單,實質就是一個參數INCREMENTAL LEVEL=n,在執行BACKUP命令時加上即可,例如,建立一個增量級別0的全庫備份:
RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;
再例如,建立一個增量級別1的users01.dbf數據文件備份
RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF';
注:Rman默認創建的增量備份是Differential方式,如果要建立Cumulative方式的增量備份,在執行BACKUP命令時顯式指定即可,例如:
RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
關於增量備份概念性解釋,比如Differential與Cumulative兩種方式間的區別請參考本篇外傳,括弧,外傳整理中,如果您看到本篇的時候外傳還沒出,這個。。。。表著急,耐心等候,面包牛奶都會有的。
二、建立鏡像復制
首先大家需要明了這個概念,rman中的鏡像復制實質與通過操作系統copy命令備份相同,甚至連命令的格式都相似,只不過直接應用操作系統的copy命令復制數據文件時,只是文件拷貝,而rman的copy則能夠在復制的同時,驗證數據的有效性。
個人認為rman中的鏡像復制應用有限,而且也體現不出rman的優勢,所以俺也只是大致了解了概念,沒有進行過實際操作,感興趣的朋友可以自己做做試驗,這裡就不多做介紹了。
三、建立冗余備份
RMAN提供了一種更謹慎的備份策略:Duplexed方式備份,其實質即是在生成備份集的同時,向指定位置生成指定份數(最大不超過4份)的備份集復制,以避免在災難性事故時數據庫損壞和備份丟失的情況下導致完全崩潰,提高備份可用性。當然,這是人類美好的願意,對於那些沒有異機異地備份條件的,假如機房發生火災、地震之類大災難,就算dba把備份文件復制了100份也照樣玩完,上述是個假設,萬勿對號入座,火災、地震也不是哪都會發生地,大家好好活著,別害怕。
RMAN中提供了三種方式實現Duplexed方式備份:
1、在RMAN中執行BACKUP命令時顯式指定COPIES參數。例如:
RMAN> BACKUP COPIES 3 DATABASE;
上述命令將會在全庫備份的同時,自動生成當前備份集的2份拷貝到默認備份目錄。
2、在RUN{}命令塊中利用SET BACKUP COPIES命令為該命令塊中所有的BACKUP命令設置Duplexed方式,例如:
RMAN> RUN{
2>SET BACKUP COPIES 2;
3>BACKUP DEVICE TYPE DISK FORMAT 'D:\BACKUP1\%U','D:\BACKUP2\%U'
4>TABLESPACE USERS,SALES;
5>}
上述命令將生成兩份備份集,分別存儲到d:\backup1和d:\backup2目錄。
3、通過CONFIGURE ..... BACKUP COPIES命令設置預定義的備份Duplexed方式。
CONFIGURE ... BACKUP COPIES命令可以為指定的設備類型設置默認的備份拷貝數量。這個配置僅適用於數據文件與歸檔重做日志文件和備份,並且,只有在使用自動分配的通道時才能夠使用CONFIGURE ... BACKUP COPIES命令設置的配置。例如:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;
上述命令將disk設置上數據文件與歸檔文件的拷備數量設置為2,當再執行BACKUP DATABASE備份時,即會自動生成2份數據文件的備份集。
四、設置RMAN備份的保存策略
策略,啧啧,想不到咱也能說出這麼專業的詞兒啊,人家說專家就是能把任何事務都描述的很專業,我一定要再多學幾個類似的詞,要讓自己離專家的距離更近一些,或者,我直接搬到eygle他們家床頭邊上住去~~~~
如果你的數據庫非常大,並且備份執行也比較頻繁(廢話,不大不頻繁也得這麼干,優秀的dba一定要擁有對應其身份的良好的工作習慣),有必要對你這些備份文件的保存制訂合理的策略。該挪的挪,該搬的搬,該刪除的刪,合理釋放,最大化利用有限的磁盤空間嘛。
在通過RMAN創建的備份片段中,由於備份文件也是由rman創建和維護,所以手工刪除並不明智,並且RMAN也提供了備份保留策略,合理制訂,由RMAN自動刪除過舊的備份文件更加安全也更加方便。
RMAN中提供了兩種備份保留策略:基於時間,和基於冗余數量
為RMAN設置了備份保留策略之後,RMAN會自動判斷哪些備份集或鏡像復制文件不必再保留。這些備份文件將會被標記為“廢棄(Obsolete)”,可以通過REPORT OBSOLETE命令查看當前處於廢棄狀態的備份文件,或者通過DELETE OBSOLETE命令刪除這些廢棄的備份。例如:
RMAN> report obsolete;
正在使用目標數據庫控制文件替代恢復目錄
RMAN 保留策略將應用於該命令
將 RMAN 保留策略設置為 3 天的恢復窗口
已廢棄的備份和副本報表
類型 關鍵字 完成時間 文件名/句柄
-------------------- ------ ------------------ --------------------
備份集 21 04-7月 -07
備份段 21 04-7月 -07 D:\BACKUP\C-3391142503-20070704-01
RMAN> delete obsolete;
RMAN 保留策略將應用於該命令
將 RMAN 保留策略設置為 3 天的恢復窗口
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
刪除以下已廢棄的備份和副本:
類型 關鍵字 完成時間 文件名/句柄
-------------------- ------ ------------------ --------------------
備份集 21 04-7月 -07
備份段 21 04-7月 -07 D:\BACKUP\C-3391142503-20070704-01
是否確定要刪除以上對象 (輸入 YES 或 NO)? y
已刪除備份段
備份段 handle=D:\BACKUP\C-3391142503-20070704-01 recid=21 stamp=627061645
1 對象已刪除
在執行刪除命令時有兩點需要了解:
l 如果被判斷為廢棄的備份是一個單獨數據文件的鏡像復制,那麼在執行DELETE命令時將直接刪除這個鏡像復制文件。
l 如果被判斷為廢棄的備份是一個備份集中的一部分,則必須等到整個備份集中所有其它文件都被廢棄之後,才能刪除這個備份集。
1、基於時間的備份保留策略。
說的簡單些,就是你希望數據庫最早能恢復到幾天前。比如將恢復時間段設置為7,那麼RMAN所保留的備份即是可以保證你將數據庫恢復到一周內任何時刻下那些文件。
設置基於時間的備份保留策略可以通過CONFIGURE命令,例如:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
注:n=大於0的正整數
執行該命令後,RMAN將始終保留那些將數據庫恢復到n天前的狀態時需要用到的備份,比如,恢復時間段被設置為7天,那麼各個數據文件的備份必須滿足如下條件:
SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7
任何不滿足上述條件的備份都將被RMAN廢棄並可通過DELETE OBSOLETE命令刪除。Ok,基本知識講完了,下面考驗你的時刻到了,提問:如果滿足條件的備份你也想刪,咋整?啥?DEL?D你個大頭鬼,再回去看看第二章。
2、基於冗余數量的備份保留策略
基於冗余數量實質即某個數據文件以各種形式(包括備份集和鏡像復制)存在的備份的數量。如果某個數據文件的冗余備份數量超出了指定數量,RMAN將廢棄最舊的備份。
同樣,基於數量的備份保留策略也是通過CONFIGURE命令設置,例如:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
同上:n=大於0的正整數
你也可以通過下列命令設置成不采用任何備份保留策略:
RMAN> CONFIGURE RETENTION POLICY TO NONE;
五、備份優化
RMAN中的備份優化(Backup Optimization)是指在備份過程中,如果滿足特定條件,RMAN將自動跳過某些文件而不將它們包含在備份集中以節省時間和空間。說的直白些就是能不備的它就不備了,不像原來甭管文件有沒有備份過統統再備一遍。由上可知,優化就是偷懶嘛,en,我也要優化的干活:)
話說回來,這個懶也不是什麼時候都能偷的,ooo,說錯了,是優化。通常必須滿足如下幾個條件的情況下,才能夠啟用備份優化的功能:
l CONFIGURE BACKUP OPTIMIZATION參數置為on;
l 執行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中帶有ALL或LIKE參數。
l 分配的通道僅使用了一種設備類型,也就是沒有同時分配使用sbt與disk的多個通道。(我知道我知道,通道還沒講,你也等著看外傳吧。不過在這兒可以簡單描述一下我的理解,In my opinion,sbt與disk就像一條是公路,一條是海路,而通道則相當於你選擇了走公路之後,還得選擇是走北三環,還是走北五環,還是兩條一塊走)
打開備份優化設置通過如下命令:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
那麼在進行備份優化時,RMAN是如何判斷要備份的文件是否需要被優化呢,這個算法就相當復雜了,而且可能影響優化算法的因素也非常多,假如某庫在上午9點被執行過一次全庫備份,等下午3點再次執行全庫備份時,備份的文件沒有變動而且也已經被備份過時,才會跳過這部分文件。所以理論上備份優化僅對於只讀表空間或offline表空間起作用。當然對於已經備份過的archivelog文件,它也會跳過(注:上述言論出自yangtingkun大牛,哎,我說老yang你能不能再多說兩句,再給我們來一段20W字左右的簡短發言呗,哎,你別走啊,你跑什麼呀。。。。。。。)。