| 模式 | 歸檔 | 可恢復點 | 業務停機 | 適用 |
|---|---|---|---|---|
| NOARCHIVELOG + 冷備份 | 否 | 最後一次冷備份 | 是 | 開發/測試、可容忍數據丟失 |
| ARCHIVELOG + 熱備份 | 是 | 任意時間點 (PITR) | 否 | 生產 7×24、核心業務 |
強烈建議生產庫啟用 ARCHIVELOG。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- init.ora 參數
log_archive_start=true
log_archive_dest=/u01/arch
log_archive_format=arc_%t_%s_%r.arc
# 半年全備
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
BACKUP FULL TAG 'HALF_YEAR_FULL' FORMAT '/backup/full_%U' DATABASE INCLUDE CURRENT CONTROLFILE;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/arch_%U';
RELEASE CHANNEL c1; RELEASE CHANNEL c2;
}
# 月 Level 0
BACKUP INCREMENTAL LEVEL 0 TAG 'MONTHLY_L0' DATABASE SKIP READONLY FORMAT '/backup/l0_%U';
# 週 Level 1 累積
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE TAG 'WEEKLY_L1_CUM' DATABASE SKIP READONLY FORMAT '/backup/l1c_%U';
# 日 Level 1 差異
BACKUP INCREMENTAL LEVEL 1 TAG 'DAILY_L1_DIFF' DATABASE SKIP READONLY FORMAT '/backup/l1d_%U';
# 歸檔每小時
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/arch_%U';
上述策略最多恢復:1 個 L0 + 3 個 L1_CUM + 6 個 L1_DIFF + 當日歸檔。若 RTO 過長,縮短 L0 間隔(如雙週)。
AT / 任務排程器 → rman cmdfile=backup.rcv。crontab → 0 2 * * 0 /scripts/rman_full.sh(每週日 02:00 全備)、0 3 * * * /scripts/rman_inc.sh(每日 03:00 增量)。CONFIGURE CONTROLFILE AUTOBACKUP ON