%D:位于該月中的天數(shù) (DD);
%M:位于該年中的月份 (MM);
%F:一個基于DBID唯一的名稱。格式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII為該數(shù)據(jù)庫的DBID,YYYYMMDD為日期,QQ是一個1-256的序列;
%n:數(shù)據(jù)庫名稱,并且會在右側(cè)用x字符進行填充,使其保持長度為8;
%u:是一個由備份集編號和建立時間壓縮后組成的8字符名稱。利用%u可以為每個備份集生成一個唯一的名稱;
%p:表示備份集中備份片段的編號,從1 開始編號;
%U:是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式;
%s:備份集的號;
%t:備份集時間戳;
%T:年月日格式(YYYYMMDD);
?
??? 上述命令將會在全庫備份的同時,自動生成當(dāng)前備份集的2份拷貝到默認(rèn)備份目錄。
?????? 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目錄。
??? 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設(shè)置上數(shù)據(jù)文件與歸檔文件的拷備數(shù)量設(shè)置為2,當(dāng)再執(zhí)行BACKUP DATABASE備份時,即會自動生成2份數(shù)據(jù)文件的備份集。
??? 全備與增備是針對數(shù)據(jù)文件而言,控制文件和歸檔日志文件不能進行增量備份。當(dāng)然,后兩者可以做備份優(yōu)化。
??? 數(shù)據(jù)庫打開狀態(tài)下進行備份即是打開備份,數(shù)據(jù)庫關(guān)閉狀態(tài)下(加載狀態(tài))進行的備份即關(guān)閉備份。
??? 數(shù)據(jù)庫打開狀態(tài)或不干凈關(guān)閉狀態(tài)(shutdown abort)進行的備份是不一致備份,利用不一致的備份修復(fù)數(shù)據(jù)庫后還需要做數(shù)據(jù)庫的恢復(fù)。在數(shù)據(jù)庫干凈關(guān)閉狀態(tài)進行的備份是一致備份,利用一致備份修復(fù)數(shù)據(jù)庫后不需要做數(shù)據(jù)庫的恢復(fù)。
在寫腳本之前,我們先明確一下我們的目標(biāo):
1 、每天夜間 1 點執(zhí)行;
2 、數(shù)據(jù)庫全備,同時備份控制文件及歸檔日志文件,備份文件保存至: D:\backup\ 目錄下,并在完成歸檔日志文件備份后,自動刪除已備份的歸檔日志;
3 、備份保留 7 天,過期則自動刪除;
4 、保留操作日志備查;
以 Windows 環(huán)境為例 (linux 環(huán)境下與此基本類似, rman 的腳本您甚至連改都不用改,就把調(diào)用 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 的數(shù)據(jù)文件只要存在于磁盤上就仍然可被讀取,但是可能有些文件已經(jīng)被刪除或移到它處造成不可讀,加上這個參數(shù)就會跳過這些文件;
SKIP OFFLINE :跳過 offline 的數(shù)據(jù)文件;
SKIP READONLY :跳過那些所在表空間為 read-only 的數(shù)據(jù)文件;
注意喲,你從網(wǎng)上搜索 rman 備份腳本,可能有些腳本中會出現(xiàn)一項: sql 'alter system archive log current'; 這句是讓 archivelog 日志歸檔,實際上完全沒必要,我們在第三節(jié)的時候講過,通過 plus archivelog 方式備份時, rman 會自動對當(dāng)前的 archivelog 進行歸檔。
2
、編寫
dos
批處理
?
保存至: E:\oracleScript\backup\database_backup_jssweb.bat
設(shè)定要備份的數(shù)據(jù)庫 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
、設(shè)定執(zhí)行計劃
?
控制面板 -> 任務(wù)計劃中添加計劃,運行 E:\oracleScript\backup\database_backup_jssweb.bat ,設(shè)定日程安排中的時間。
竣工!