核心 BACKUP 指令參數速查
| 參數/子句 | 功能 | 範例 |
TAG | 備份標記,唯一識別;同 TAG 多次備份僅保留最新 | BACKUP DATABASE TAG 'FULL_BAK1' |
MAXSETSIZE | 限制單一備份集大小,必須 > 最大資料檔 | BACKUP DATABASE MAXSETSIZE 100M TAG 'DF1' |
MAXPIECESIZE | 限制單一備份片大小 (受限磁帶/檔案系統) | 見下方 CHANNEL 範例 |
KEEP FOREVER | 永久保留,不受保留策略影響 | BACKUP DATABASE KEEP FOREVER |
KEEP UNTIL TIME | 保留至指定時間 | BACKUP DATABASE KEEP UNTIL TIME 'SYSDATE+30' |
NOEXCLUDE | 覆蓋 CONFIGURE EXCLUDE,強制備份被排除表空間 | BACKUP DATABASE NOEXCLUDE KEEP FOREVER TAG 'TEST' |
VALIDATE | 僅掃描檢查實體/邏輯壞塊,不產生備份 | BACKUP VALIDATE DATABASE |
SKIP READONLY/OFFLINE/INACCESSIBLE | 跳過唯讀/離線/不可存取檔案 | BACKUP DATABASE SKIP READONLY |
FORCE | 忽略優化 (已備份未變更檔案),強制重備 | BACKUP DATABASE FORCE |
NOT BACKED UP [SINCE TIME] | 增量備份:僅備份從未備份/指定時間後未備份的檔案 | BACKUP DATABASE NOT BACKED UP SINCE TIME 'SYSDATE-2' |
CHECK LOGICAL | 備份過程中檢查邏輯壞塊 (搭配 VALIDATE 或單獨使用) | BACKUP CHECK LOGICAL DATABASE |
COPIES | 產生多份備份副本 (鏡像備份) | BACKUP DATABASE COPIES 2 |
INCLUDE CURRENT CONTROLFILE | 備份時同步包含當前控制檔 | BACKUP DATABASE DEVICE TYPE DISK INCLUDE CURRENT CONTROLFILE |
實戰場景範例
1. 通道配置控制片大小 (磁帶/檔案系統限制)
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK
MAXPIECESIZE 100M FORMAT '/backup/full_%U_%T';
BACKUP DATABASE TAG 'FULL_0';
RELEASE CHANNEL c1;
}
-- 或持久化配置
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 100M;
CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR; -- 移除持久化設定
2. 異地備份策略:每日全備 + 每小時歸檔 + 30 天保留
-- 每日 02:00 全備永久保留 (月末手動刪除)
BACKUP DATABASE TAG 'DAILY_FULL_&TO_CHAR(SYSDATE,'YYYYMMDD')' KEEP FOREVER;
-- 每小時歸檔備份保留 30 天
BACKUP ARCHIVELOG ALL TAG 'HOURLY_ARCH_&TO_CHAR(SYSDATE,'HH24')'
KEEP UNTIL TIME 'SYSDATE+30';
3. 大表空間排除日常備份,季末才納入
-- 日常排除大型歷史表空間
CONFIGURE EXCLUDE FOR TABLESPACE HIST_DATA;
-- 季末完整備份強制包含
BACKUP DATABASE NOEXCLUDE TAG 'QUARTERLY_FULL' KEEP FOREVER;
4. 生產上線前完整驗證 (不影響業務)
BACKUP VALIDATE CHECK LOGICAL DATABASE;
-- 掃描所有資料檔實體/邏輯壞塊,若有錯誤會在 V$DATABASE_BLOCK_CORRUPTION 記錄
5. 多副本異地備份 (單次備份產生 2 份副本)
BACKUP DATABASE COPIES 2
FORMAT '/backup1/%U', '/backup2/%U';
-- 需配置兩個獨立儲存路徑,或使用 FRA + 遠端掛載點
常見錯誤與對策
| 錯誤代碼 | 原因 | 解決 |
| RMAN-06183 | MAXSETSIZE < 最大資料檔 | 調大 MAXSETSIZE 或移除限制 |
| RMAN-06054 | 備份集找不到 (已被手動刪除) | CROSSCHECK BACKUP → DELETE EXPIRED BACKUP |
| ORA-19504 | 建立檔案失敗 (路徑/權限/空間) | 檢查備份目錄權限、磁碟空間、FORMAT 格式 |
| ORA-19809 | FRA 空間不足 | 擴大 DB_RECOVERY_FILE_DEST_SIZE 或清理過期備份 |
最佳實務檢核清單
- [ ] 所有備份皆加
TAG 且含日期/類型資訊
- [ ]
CONFIGURE CONTROLFILE AUTOBACKUP ON 已啟用
- [ ]
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS (或業務需求天數)
- [ ] 定期
CROSSCHECK + DELETE OBSOLETE 自動清理
- [ ] 關鍵資料庫啟用
BACKUP CHECK LOGICAL 定期驗證
- [ ] 異地備份至少雙副本 (COPIES 2 或雙通道不同路徑)
- [ ] 季度演練完整恢復測試 (含 PITR、TSPITR、Table Recovery)