歸檔模式 (ARCHIVELOG) 是實現時間點恢復 (PITR)、Data Guard 同步、熱備份的前提。本文詳細記錄從非歸檔切換至歸檔的完整流程、歸檔參數配置、手動/自動歸檔啟用、日志切換驗證與常見誤區。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST;
輸出關鍵欄位:
Database log mode: Archive Mode → 已啟用Automatic archival: Enabled → 自動歸檔進程 (ARCn) 運行中Archive destination → 歸檔檔案預設路徑Oldest/Next/Current log sequence → 線上日志序號追蹤| 參數 | 說明 | 建議/範例 |
|---|---|---|
| LOG_ARCHIVE_DEST_n | 歸檔目的地 (n=1..31),支援 LOCAL/服務/快速恢復區 | ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD' SCOPE=BOTH; |
| LOG_ARCHIVE_DEST_STATE_n | 目的地狀態:ENABLE/DEFER/ALTERNATE | ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE SCOPE=BOTH; |
| LOG_ARCHIVE_FORMAT | 歸檔檔名格式 | %t_%s_%r.arc (執行緒_序號_重置ID) |
| LOG_ARCHIVE_MAX_PROCESSES | ARCn 進程上限 (1-30),預設 4 | ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SCOPE=BOTH; |
| LOG_ARCHIVE_MIN_SUCCEED_DEST | 最少成功寫入目的地數,預設 1 | Data Guard 環境建議 ≥2 |
| DB_RECOVERY_FILE_DEST | 快速恢復區 (FRA) 路徑 | ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/fra' SCOPE=BOTH; |
| DB_RECOVERY_FILE_DEST_SIZE | FRA 空間上限 | ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=50G SCOPE=BOTH; |
現代最佳實踐:棄用舊參數
LOG_ARCHIVE_DEST/LOG_ARCHIVE_DUPLEX_DEST,全面改用LOG_ARCHIVE_DEST_n+ FRA,支援多目的地、優先級、備援、壓縮、加密。
ARCHIVE LOG START;
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
-- 10g 起 LOG_ARCHIVE_START 已廢棄,自動歸檔預設開啟,無需設定
-- 1. 確認自動歸檔已啟用
ARCHIVE LOG LIST;
-- 應顯示 Automatic archival: Enabled
-- 2. 強制日志切換產生歸檔
ALTER SYSTEM SWITCH LOGFILE;
-- 3. 檢查歸檔目的地目錄
-- ls -l /u01/arch/ (或 FRA 目錄)
-- 應見新產生的 arc 檔案
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/new/arch/path' SCOPE=BOTH;
-- 切換後建議執行一次 SWITCH LOGFILE 驗證
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/mnt/remote_arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
-- 檢查 ARCn 進程狀態
SELECT process, status, thread#, sequence#, block#, blocks
FROM v$managed_standby
WHERE process LIKE 'ARC%';
-- 檢查歸檔缺口 (Data Guard)
SELECT * FROM v$archive_gap;
ALTER SYSTEM ARCHIVE LOG CURRENT; -- 歸檔當前線上日志
ALTER SYSTEM ARCHIVE LOG SEQUENCE 100; -- 歸檔指定序號
ALTER SYSTEM ARCHIVE LOG ALL; -- 歸檔所有未歸檔
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE NOARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST; -- 確認 Database log mode: No Archive Mode
⚠️ 切回非歸檔將喪失 PITR 能力、無法熱備份、Data Guard 停止同步。僅限測試/開發環境或極特殊維護窗口。
LOG_ARCHIVE_DEST_n 建議指向共享儲存 (ACFS/NFS/ASM) 或各自本地並配合跨掛載同步。THREAD 參數區分實例日志流,LOG_ARCHIVE_FORMAT 必須包含 %t。srvctl config database -d <db> -a 檢視歸檔配置。ARCHIVE LOG LIST 顯示 Archive Mode + Automatic archival EnabledLOG_ARCHIVE_DEST_n 配置 ≥2 個目的地 (本地 + 異地/FRA)DB_RECOVERY_FILE_DEST/SIZE 設定並監控使用率 < 80%LOG_ARCHIVE_FORMAT 含 %t_%s_%r 確保唯一性ALTER SYSTEM SWITCH LOGFILE 驗證歸檔生成正常BACKUP ARCHIVELOG ALL)ORA-19504 (建立檔案失敗)、ORA-00257 (歸檔目的地滿) 錯誤