這是一個整合了 全量備份(--full)、增量級別 0(--incr0)、增量級別 1(--incr1) 的 RMAN 備份 Shell 腳本。支援多通道並行、壓縮備份集、自動建立目錄結構、日誌記錄與過期備份清理,適合生產環境排程使用。
腳本以日期為根目錄(如 2015_06_01),自動建立以下子目錄:
archlog/ — 歸檔日誌備份ctlfile/ — 控制檔備份data/full/ — 全量資料檔備份data/incr0/ — 增量 0 資料檔備份data/incr1/ — 增量 1 資料檔備份log/ — 執行日誌(含 dbbak.log 總覽與各任務詳細輸出)每種備份模式啟動時,均檢查並建立 RMAN_HOME 目錄結構、建立日誌檔案,確保後續寫入不報錯。
allocate channel c1 type disk MAXPIECESIZE 5g;
allocate channel c2 type disk MAXPIECESIZE 5g;
... c5 ...
backup AS COMPRESSED BACKUPSET ... format '...';
COMPRESSED BACKUPSET 啟用 RMAN 內建壓縮,節省儲存空間。使用 TAG 標識備份類型(fullbackup、incr0backup、incr1backup),檔名包含時間、DBID、片號等資訊,便於識別與恢復。
backup ... archivelog all delete input:備份並刪除已備份的歸檔,防止磁碟填滿。include current controlfile / backup current controlfile:確保控制檔隨資料檔一同備份。delete noprompt obsolete;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
每次備份前後自動執行過期清理與交叉檢查,保持備份目錄整潔、目錄庫資訊準確。
# 全量備份
sh backup.sh --full /backup/rman
# 增量級別 0(基準增量)
sh backup.sh --incr0 /backup/rman
# 增量級別 1(差異增量)
sh backup.sh --incr1 /backup/rman
# 查看幫助
sh backup.sh --help
參數說明:第一個參數為模式,第二個參數為備份根目錄(腳本會在其下建立日期子目錄)。
$ORACLE_HOME/scripts 或專用目錄,賦予 oracle:dba 執行權限。crontab 排程:每日全量、每 6 小時增量 1、每週增量 0 等策略。RESTORE VALIDATE 驗證備份可用性。這個三合一腳本將 RMAN 常用備份模式封裝為單一入口,減少人為操作失誤,並內建目錄管理、日誌審計、過期清理等生產級特性,是 DBA 工具箱中的利器。