控制檔是資料庫的「身分證與地圖」,記錄資料庫名稱、建立時間、資料檔/日誌檔路徑、表空間資訊、檢查點 SCN 等關鍵中繼資料。其損壞將導致資料庫無法啟動,因此多路複寫與備份策略是高可用架構的核心環節。
透過 CONTROL_FILES 參數指定多份副本(最多 8 份),Oracle 同步寫入、唯讀第一份:
*.control_files=(
'/u01/oradata/ORCL/control01.ctl',
'/u02/oradata/ORCL/control02.ctl',
'/u03/oradata/ORCL/control03.ctl'
)
鐵律:
查詢現況:
SQL> SELECT name FROM v$controlfile;
新增副本(線上操作):
SQL> ALTER SYSTEM SET control_files=
'/u01/oradata/ORCL/control01.ctl',
'/u02/oradata/ORCL/control02.ctl',
'/u03/oradata/ORCL/control03.ctl',
'/u04/oradata/ORCL/control04.ctl'
SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE
-- OS 層複製既有控制檔至新路徑
SQL> STARTUP
移除副本:同理修改 SPFILE 移除路徑 → 關機 → OS 刪除檔案 → 啟動。
| 層級 | 方式 | 觸發時機 | 恢復速度 |
|---|---|---|---|
| L1 | 多路複寫 (CONTROL_FILES) | 即時同步寫入 | 秒級 (切換副本) |
| L2 | RMAN 自動備份 (CONFIGURE CONTROLFILE AUTOBACKUP ON) | 結構變更、備份完成時 | 分鐘級 |
| L3 | 手動備份至追蹤檔 / 二進制檔 | DDL 操作後 (增刪資料檔、表空間、日誌組) | 分鐘級 |
手動備份指令:
-- 二進制備份
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/ctl_20240115.ctl';
-- 文字追蹤檔 (可編輯參數)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/ctl_%F';
-- 驗證
SQL> SELECT * FROM v$rman_configuration;
RMAN> LIST BACKUP OF SPFILE CONTROLFILE;
RESTORE CONTROLFILE FROM AUTOBACKUP;STARTUP NOMOUNT → RMAN 還原控制檔/SPFILE → ALTER DATABASE MOUNT → 完整恢復CREATE SPFILE FROM MEMORY; 直接從記憶體重建參數檔遵循「多路複寫即時防護 + RMAN 自動備份落地 + 關鍵變更手動補檔」三層策略,可將控制檔故障的 RTO 控制在分鐘級,RPO 接近零。