首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle RMAN BACKUP 指令實戰大全:標記、片大小、保留策略、驗證、跳過、強制與多副本

     編輯:Oracle 資料庫基礎

核心 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-06183MAXSETSIZE < 最大資料檔調大 MAXSETSIZE 或移除限制
RMAN-06054備份集找不到 (已被手動刪除)CROSSCHECK BACKUP → DELETE EXPIRED BACKUP
ORA-19504建立檔案失敗 (路徑/權限/空間)檢查備份目錄權限、磁碟空間、FORMAT 格式
ORA-19809FRA 空間不足擴大 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)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved