通過前面的若干,咱們已經瞭解並嘗試了rman備份的一些命令,可是在實際環境中,不可能每次備份都要求DBA一條命令一條命令來敲,經過前章的學習咱們已經立志必定要優化的幹活,因此咱們應該寫好一段腳本,而後放在服務器端定時執行。DBA只須要時不時看看備份的結果就成了。linux
在寫腳本以前,咱們先明確一下咱們的目標:web
1 、天天夜間1點執行;sql
2 、數據庫全備,同時備份控制文件及歸檔日誌文件,備份文件保存至:D:\backup\目錄下,並在完成歸檔日誌文件備份後,自動刪除已備份的歸檔日誌;數據庫
3 、備份保留7天,過時則自動刪除;bash
4 、保留操做日誌備查;服務器
以Windows環境爲例(linux環境下與此基本相似,rman的腳本您甚至連改都不用改,就把調用rman腳本的命令行改改就好了):oracle
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;
上述的各項命令均在前面幾個章節中提到過,若是有看着眼生的話,再回去翻翻前面。命令是都知曉地,可能有幾個參數會不明白其意義,好比:BACKUP命令中的SKIT INACCESSIBLE參數,看下面:優化
SKIP 選項 說明
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,設定日程安排中的時間。
竣工!
說是實戰,實際上演練的味道依然濃厚,誰讓咱這是在測試呢。上述腳本已初具雛形,固然還應該再增長一些更合理的配置,好比根據您的數據庫大小,適當調整通道數量,以及加上日期的判斷,根據時間進行增量備份。