RMAN學習筆記06——知識點
?
?
??? 還有一些RMAN的細節知識點需要學習一下,可以更好得了解RMAN備份的特性和工作機制。看一下這些內容是很有必要的。另外在RMAN學習的最后一篇,摘錄了一個使用RMAN備份的實例,包括了簡單的備份策略。具體如下:
?
?
一、FORMAT字符串的含義
?
%c:備份片的拷貝數(從1開始編號);
%d:數據庫名稱;
%D:位于該月中的天數 (DD);
%M:位于該年中的月份 (MM);
%F:一個基于DBID唯一的名稱。格式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII為該數據庫的DBID,YYYYMMDD為日期,QQ是一個1-256的序列;
%n:數據庫名稱,并且會在右側用x字符進行填充,使其保持長度為8;
%u:是一個由備份集編號和建立時間壓縮后組成的8字符名稱。利用%u可以為每個備份集生成一個唯一的名稱;
%p:表示備份集中備份片段的編號,從1 開始編號;
%U:是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式;
%s:備份集的號;
%t:備份集時間戳;
%T:年月日格式(YYYYMMDD);
?
注:注意區分大小寫;若不特別指定,則默認使用%U。
?
?
二、冗余備份
?
??? RMAN提供了一種更謹慎的備份策略:Duplexed方式備份,其實質即是在生成備份集的同時,向指定位置生成指定份數(最大不超過4份)的備份集復制,以避免在災難性事故時數據庫損壞和備份丟失的情況下導致完全崩潰,提高備份可用性。
?
??? 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備份相關的動態性能表
?
V$ARCHIVED_LOG:
??? 本視圖包含了所有歸檔重做日志文件的創建情況,備份情況以及其他信息。
V$BACKUP_CORRUPTION:
??? 這個視圖顯示了RMAN在哪些備份集中發現了損壞的數據壞。在你使用BACKUP VALIDATE命令對備份集進行檢查時如果發現了損壞的數據塊,RMAN將在這個視圖中寫入記錄。
V$COPY_CORRUPTIO:
??? 本視圖顯示了哪些鏡像復制備份文件已經被損壞。
V$BACKUP_DATAFILE:
??? 本視圖通常用來獲取每個數據文件中非空白數據塊的數量,從而幫助你創建出大小基本相等的備份集。另外,在視圖中也包含了數據文件中損壞的數據塊的信息。
V$BACKUP_REDOLOG:
??? 本視圖顯示了在現有的備份集中有哪些歸檔重做日志文件。
V$BACKUP_SET:
??? 本視圖顯示了已經創建的備份集的信息。
V$BACKUP_PIECE:
??? 本視圖顯示了已經創建的備份片段的信息。
?
?
四、增量備份的工作機制:
?
??? RMAN中增量備份有兩種:Differential方式和Cumulative方式。通過level來判斷備份策略:
?
??? Differential:
???
?
??? Cumulative:
???
?
?
五、RMAN備份類型:
?
完全備份(Full Backup)與增量備份(Incremental Backup)
??? 全備與增備是針對數據文件而言,控制文件和歸檔日志文件不能進行增量備份。當然,后兩者可以做備份優化。
?
打開備份(Open Backup)或關閉備份(Closed Backup)
??? 數據庫打開狀態下進行備份即是打開備份,數據庫關閉狀態下(加載狀態)進行的備份即關閉備份。
?
一致備份(Consistent Backup)與不一致備份(Inconsistent Backup)
??? 數據庫打開狀態或不干凈關閉狀態(shutdown abort)進行的備份是不一致備份,利用不一致的備份修復數據庫后還需要做數據庫的恢復。在數據庫干凈關閉狀態進行的備份是一致備份,利用一致備份修復數據庫后不需要做數據庫的恢復。
?
?
?
六、備份示例:
?
在寫腳本之前,我們先明確一下我們的目標:
1
、每天夜間
1
點執行;
2
、數據庫全備,同時備份控制文件及歸檔日志文件,備份文件保存至:
D:\backup\
目錄下,并在完成歸檔日志文件備份后,自動刪除已備份的歸檔日志;
3
、備份保留
7
天,過期則自動刪除;
4
、保留操作日志備查;
?
以
Windows
環境為例
(linux
環境下與此基本類似,
rman
的腳本您甚至連改都不用改,就把調用
rman
腳本的命令行改改就行了
)
:
?
1
、編寫
rman
批處理文件
?
保存至:
E:\oracleScript\backup\database_backup_jssweb.rman
RUN {
?CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
?CONFIGURE CONTROLFILE AUTOBACKUP ON;
?CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
?ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:/backup/%U';
?BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
?
? PLUS ARCHIVELOG FILESPERSET 20
?
? DELETE ALL INPUT;
?RELEASE CHANNEL CH1;
?}
?ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
?CROSSCHECK BACKUPSET;
?DELETE NOPROMPT OBSOLETE;
?
SKIP INACCESSIBLE
:表示跳過不可讀的文件。我們知道一些
offline
的數據文件只要存在于磁盤上就仍然可被讀取,但是可能有些文件已經被刪除或移到它處造成不可讀,加上這個參數就會跳過這些文件;
SKIP OFFLINE
:跳過
offline
的數據文件;
SKIP READONLY
:跳過那些所在表空間為
read-only
的數據文件;
?
注意喲,你從網上搜索
rman
備份腳本,可能有些腳本中會出現一項:
sql 'alter system archive log current';
這句是讓
archivelog
日志歸檔,實際上完全沒必要,我們在第三節的時候講過,通過
plus archivelog
方式備份時,
rman
會自動對當前的
archivelog
進行歸檔。
?
2
、編寫
dos
批處理
?
保存至:
E:\oracleScript\backup\database_backup_jssweb.bat
設定要備份的數據庫
sid
為
jssweb
,將日志按照日期輸出到
E:\oracleScript\backup\logs\
目錄。
?
set oracle_sid=jssweb
rman target / msglog E:\oracleScript\backup\logs\%date:~0,10%.log cmdfile=E:\oracleScript\backup\database_backup_jssweb.rman
?
3
、設定執行計劃
?
控制面板
->
任務計劃中添加計劃,運行
E:\oracleScript\backup\database_backup_jssweb.bat
,設定日程安排中的時間。
竣工!
?
?
?