控制檔記錄了資料庫的物理結構資訊(資料檔、重做日誌檔位置、檢查點資訊等),一旦損壞且無備份,資料庫將無法啟動。正如 Windows 登錄表損壞導致系統無法開機,控制檔的安全性直接決定資料庫的生死存亡。
備份控制檔屬於「事後補救」,還原過程中資料庫必須停機。而多路復用讓 Oracle 同步寫入多份控制檔(置於不同磁碟/控制器),單一檔案損壞時系統自動切換至健全副本,零停機、零資料遺失,是保障高可用性的最佳實踐。
ALTER SYSTEM SET control_files =
'C:\oradata\DB01\control01.ctl',
'D:\oradata\DB01\control02.ctl',
'E:\oradata\DB01\control03.ctl' SCOPE=SPFILE;
關鍵:必須保留既有控制檔路徑,新增路徑而非取代,否則舊副本將被遺棄。
SHUTDOWN IMMEDIATE;
-- 於 services.msc 停止 OracleServiceSID、OracleListener 等服務
將既有控制檔(如 control01.ctl)複製至步驟 1 指定的新路徑,並依參數設定命名(control02.ctl、control03.ctl)。
STARTUP;
SELECT name FROM v$controlfile; -- 應顯示三個路徑皆為有效狀態
SELECT name FROM v$controlfile 確認實際生效路徑,切勿憑印象尋找。控制檔多路復用是「零成本、高收益」的高可用性保障。在 Windows 環境下,透過四個步驟即可完成部署,關鍵在於參數保留舊路徑與物理磁碟分離。建議在資料庫上線前規劃完成,避免後續調整需停機。