生產環境要求:每日凌晨 1 點自動執行全量備份,包含控制文件與歸檔日志,備份至 F:\Oracle\backup\,歸檔備份後自動刪除,保留 14 天,操作日志留存備查。以 Windows 為例(Linux/Unix 僅需調整路徑與調用命令)。
db_fullbak_JSsbook.rman)RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'F:\Oracle\BACKUP\%F';
ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT 'F:\Oracle\BACKUP\BAK_%U';
BACKUP DATABASE SKIP INACCESSIBLE
PLUS ARCHIVELOG FILESPERSET 20
DELETE ALL INPUT;
RELEASE CHANNEL C1;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT OBSOLETE;
| 命令/參數 | 作用 |
|---|---|
| CONFIGURE RETENTION POLICY ... | 設定恢復窗口 14 天,過期備份標記為 OBSOLETE |
| CONFIGURE CONTROLFILE AUTOBACKUP ON | 開啟控制文件自動備份,每次結構變更自動備份 |
| BACKUP ... PLUS ARCHIVELOG ... DELETE ALL INPUT | 備份資料庫+歸檔日志,備份成功後刪除已備份的歸檔(釋放 FRA 空間) |
| FILESPERSET 20 | 每個備份集最多包含 20 個文件,平衡並行度與恢復速度 |
| SKIP INACCESSIBLE | 跳過不可讀文件(如離線表空間),避免備份失敗 |
| CROSSCHECK BACKUPSET | 校驗控制文件/目錄記錄與物理文件一致性 |
| DELETE NOPROMPT OBSOLETE | 自動刪除過期備份(依 RETENTION POLICY),無需交互確認 |
F:\Oracle\script\backup\db_fullbak_JSsbook.rmanrun_backup.bat:
@echo off
rman target / cmdfile=F:\Oracle\script\backup\db_fullbak_JSsbook.rman log=F:\Oracle\script\backup\log\db_fullbak_%date:~-10,4%%date:~-5,2%%date:~-2,2%.log
run_backup.bat,帳號需具備 SYSDBA 權限(或設定 OS 認證)。/u01/app/oracle/backup/ 等。rman target / @/scripts/db_fullbak.rman > /logs/db_fullbak_$(date +%Y%m%d).log 2>&1crontab:0 1 * * * /scripts/run_backup.shRMAN-08138 (WARNING: archived log not deleted) 確認歸檔刪除狀態。RESTORE VALIDATE DATABASE 驗證備份可用性。