10g 引入 DB_RECOVERY_FILE_DEST(閃回恢復區),導致歸檔參數互斥規則更複雜。本文實測釐清 LOG_ARCHIVE_DEST、LOG_ARCHIVE_DEST_n、DB_RECOVERY_FILE_DEST 三者關係。
LOG_ARCHIVE_DEST + LOG_ARCHIVE_DUPLEX_DEST(舊式雙工)。LOG_ARCHIVE_DEST_1 ~ 10(新式多目的地)。DB_RECOVERY_FILE_DEST(閃回區,10g 預設啟用)。ORA-16018。-- 1. 預設情況:DEST_10 指向閃回區
SHOW PARAMETER LOG_ARCHIVE_DEST_10
-- log_archive_dest_10 = USE_DB_RECOVERY_FILE_DEST
-- 2. 嘗試設定 LOG_ARCHIVE_DEST 失敗
ALTER SYSTEM SET LOG_ARCHIVE_DEST = '/export/home/arch';
-- ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
-- 3. 必須先清空 DEST_1~10 並關閉閃回區
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = '';
...
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '';
-- 4. 此時可設定舊式參數
ALTER SYSTEM SET LOG_ARCHIVE_DEST = '/export/home/arch'; -- 成功
-- 5. 或改用新式參數(推薦)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/export/home/arch';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = ENABLE;
LOG_ARCHIVE_DEST_1 設為空字串 '' 才算「未設定」,LOG_ARCHIVE_DEST 同理。LOG_ARCHIVE_DEST_10 = USE_DB_RECOVERY_FILE_DEST,佔用第二組槽位。LOG_ARCHIVE_START 在 10g 已廢棄(啟用歸檔模式即自動啟動 ARCH 進程),參數仍可查但不可改。LOG_ARCHIVE_DEST_n(n=1~10),彈性最高、支援 SERVICE/LOCATION/VALID_FOR 等進階屬性。DB_RECOVERY_FILE_DEST),歸檔自動寫入閃回區,無需額外設定 DEST_n。ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '' 再改用 DEST_n。歸檔參數三組互斥是 10g+ 常見配置陷阱,「清空舊組 → 設定新組」順序不可顛倒。