首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料庫歸檔模式切換與管理操作完整手冊

     編輯:Oracle 資料庫基礎

前言

歸檔模式 (ARCHIVELOG) 是實現時間點恢復 (PITR)、Data Guard 同步、熱備份的前提。本文詳細記錄從非歸檔切換至歸檔的完整流程、歸檔參數配置、手動/自動歸檔啟用、日志切換驗證與常見誤區。


一、切換至歸檔模式標準流程

1.1 關閉資料庫並掛載


SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

1.2 啟用歸檔模式


ALTER DATABASE ARCHIVELOG;

1.3 開啟資料庫


ALTER DATABASE OPEN;

1.4 驗證狀態


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/ALTERNATEALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE SCOPE=BOTH;
LOG_ARCHIVE_FORMAT歸檔檔名格式%t_%s_%r.arc (執行緒_序號_重置ID)
LOG_ARCHIVE_MAX_PROCESSESARCn 進程上限 (1-30),預設 4ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SCOPE=BOTH;
LOG_ARCHIVE_MIN_SUCCEED_DEST最少成功寫入目的地數,預設 1Data Guard 環境建議 ≥2
DB_RECOVERY_FILE_DEST快速恢復區 (FRA) 路徑ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/fra' SCOPE=BOTH;
DB_RECOVERY_FILE_DEST_SIZEFRA 空間上限ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=50G SCOPE=BOTH;

現代最佳實踐:棄用舊參數 LOG_ARCHIVE_DEST/LOG_ARCHIVE_DUPLEX_DEST,全面改用 LOG_ARCHIVE_DEST_n + FRA,支援多目的地、優先級、備援、壓縮、加密。


三、自動歸檔啟用與驗證

3.1 手動啟動 (當下即時生效)


ARCHIVE LOG START;

3.2 參數持久化 (重啟後自動啟用)


ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
-- 10g 起 LOG_ARCHIVE_START 已廢棄,自動歸檔預設開啟,無需設定

3.3 完整驗證序列


-- 1. 確認自動歸檔已啟用
ARCHIVE LOG LIST;
-- 應顯示 Automatic archival: Enabled

-- 2. 強制日志切換產生歸檔
ALTER SYSTEM SWITCH LOGFILE;

-- 3. 檢查歸檔目的地目錄
-- ls -l /u01/arch/  (或 FRA 目錄)
-- 應見新產生的 arc 檔案

四、常見操作場景

4.1 修改歸檔路徑 (線上動態)


ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/new/arch/path' SCOPE=BOTH;
-- 切換後建議執行一次 SWITCH LOGFILE 驗證

4.2 新增第二歸檔目的地 (異地備援)


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;

4.3 歸檔滯後監控


-- 檢查 ARCn 進程狀態
SELECT process, status, thread#, sequence#, block#, blocks
FROM v$managed_standby
WHERE process LIKE 'ARC%';

-- 檢查歸檔缺口 (Data Guard)
SELECT * FROM v$archive_gap;

4.4 手動歸檔指定日志


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 停止同步。僅限測試/開發環境或極特殊維護窗口。


六、RAC 環境特殊考量

  1. 各實例獨立線上日志組,歸檔由各實例 ARCn 進程處理。
  2. LOG_ARCHIVE_DEST_n 建議指向共享儲存 (ACFS/NFS/ASM) 或各自本地並配合跨掛載同步。
  3. THREAD 參數區分實例日志流,LOG_ARCHIVE_FORMAT 必須包含 %t。
  4. 使用 srvctl config database -d <db> -a 檢視歸檔配置。

七、總結檢查清單

  1. [ ] ARCHIVE LOG LIST 顯示 Archive Mode + Automatic archival Enabled
  2. [ ] LOG_ARCHIVE_DEST_n 配置 ≥2 個目的地 (本地 + 異地/FRA)
  3. [ ] DB_RECOVERY_FILE_DEST/SIZE 設定並監控使用率 < 80%
  4. [ ] LOG_ARCHIVE_FORMAT 含 %t_%s_%r 確保唯一性
  5. [ ] 定期 ALTER SYSTEM SWITCH LOGFILE 驗證歸檔生成正常
  6. [ ] 備份腳本包含歸檔日志 (RMAN BACKUP ARCHIVELOG ALL)
  7. [ ] Alert.log 無 ORA-19504 (建立檔案失敗)、ORA-00257 (歸檔目的地滿) 錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved