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

Oracle 手動歸檔模式實戰:揭秘 ARCHIVE LOG LIST 的顯示陷阱

     編輯:Oracle 資料庫基礎

背景故事

一位 DBA 朋友遇到詭異現象:資料庫明明開啟了歸檔模式,卻無法自動歸檔,只能手動執行 ALTER SYSTEM ARCHIVE LOG CURRENT。經排查發現,資料庫實際處於手動歸檔模式,而 ARCHIVE LOG LIST 命令卻顯示 "Automatic archival Enabled",極具迷惑性。

關鍵知識點

  1. ARCHIVE LOG LIST 不反映手動/自動歸檔狀態,僅顯示是否為歸檔模式。
  2. 真實歸檔模式需查詢 V$DATABASE.LOG_MODE:ARCHIVELOG(自動)vs MANUAL(手動)。
  3. Data Guard 物理備庫 無法設定為手動歸檔模式,該指令對備庫無效。

完整演示流程

-- 1. 開啟自動歸檔模式
SQL> ALTER DATABASE ARCHIVELOG;
Database altered.

SQL> ARCHIVE LOG LIST;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u03/archive/dev01
Oldest online log sequence     48
Next log sequence to archive   50
Current log sequence           50

SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
ARCHIVELOG

-- 2. 切換為手動歸檔模式(關鍵步驟)
SQL> ALTER DATABASE ARCHIVELOG MANUAL;
Database altered.

SQL> ARCHIVE LOG LIST;  -- 顯示未變,極具欺騙性!
Database log mode              Archive Mode
Automatic archival             Enabled   -- 此處仍顯示 Enabled!
...

SQL> SELECT log_mode FROM v$database;  -- 唯一真實來源
LOG_MODE
------------
MANUAL

-- 3. 關閉歸檔模式
SQL> ALTER DATABASE NOARCHIVELOG;
Database altered.

SQL> ARCHIVE LOG LIST;
Database log mode              No Archive Mode
Automatic archival             Disabled
...

SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG

實戰建議

  • 監控腳本必須查詢 V$DATABASE.LOG_MODE,不可信賴 ARCHIVE LOG LIST 或 V$INSTANCE.LOG_MODE。
  • 手動歸檔模式適用於特殊維護窗口(如備份存儲暫時不可用),平時強烈建議使用自動歸檔,避免日志寫滿導致資料庫掛起。
  • 若發現「歸檔模式開啟但日志不自動切換」,首查 LOG_MODE = 'MANUAL'。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved