2026年8月24日 星期一

[研究]為何有人說 Oracle Databae 標準版只留1個月DB Log

[研究]為何有人說 Oracle Databae 標準版只留1個月DB Log

2026-08-24

各版本Oracle DB 標準版會保留 DB Log 多久 ?

不是。Oracle Database「標準版(Standard Edition / SE、SE2)」並沒有規定 DB Log 只保留 1 個月。

關鍵是要先分清楚「DB Log」是哪一種。Oracle 的不同 Log,保存機制完全不同。

Oracle 各版本的 Log 保存期限

Oracle 版本 Standard Edition Redo Log / Archived Redo Log 保存多久? 是否固定 1 個月?
Oracle 11g SE / SE1 / SE2 沒有固定天數,由 Archive、FRA、RMAN 設定決定
Oracle 12c SE / SE1 / SE2 沒有固定天數,由設定決定
Oracle 18c SE2 沒有固定天數
Oracle 19c SE2 沒有固定天數
Oracle 21c SE2 沒有固定天數
Oracle 23ai / 23c SE2 沒有固定天數
Oracle 26ai SE2 沒有固定天數

Oracle 官方文件明確說明,Archived Redo Log 的刪除不是依「Oracle Standard Edition」決定,而是依 RMAN retention policy、Archived Log Deletion Policy、Fast Recovery Area(FRA)空間等因素決定。
https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/configuring-rman-client-basic.html


為什麼有人會說「只保留 1 個月」?

通常是因為 DBA 自己設定了例如:


CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;

這代表 RMAN 以 31 天 Recovery Window 作為備份保留政策;並不是「Standard Edition 預設只保存 31 天」。Oracle 官方也直接以 31 天作為設定範例。
https://docs.oracle.com/database/121/ADMQS/GUID-48AD8DE1-B7F4-4909-939E-A0951C118AE8.htm

另外,若使用 FRA:

Oracle 會盡可能保留 Archived Redo Logs;當 FRA 空間不足時,會刪除符合條件、可回收的舊 Log。所以實際上可能是:7 天、14 天、31 天、90 天、1 年,甚至更久,完全取決於你的設定與儲存空間。

還要注意:Redo Log ≠ Alert Log ≠ Listener Log

如果你所說的「DB Log」是一般稽核或維運所講的 Log,可能是:

Log 主要用途 保存多久?
Online Redo Log DB crash recovery 不是「保留幾天」的概念,循環覆寫
Archived Redo Log Backup / Recovery 沒有固定期限,由 RMAN/FRA 等設定
Alert Log DB 啟動、錯誤、重要事件 沒有「Standard Edition = 1 個月」規定
Listener Log Oracle Listener 連線紀錄 依 ADR / listener 設定及清理方式
ADR Trace Diagnostic / Trace 依 ADR retention 設定
Audit Log 使用者/操作稽核 依 Unified Auditing / Audit 設定
RMAN Backup Log/Repository 備份管理 依 RMAN/Recovery Catalog 等設定

因此,如果你的問題是「Oracle Standard Edition 是否天生只保存 1 個月 DB Log?」答案是:❌ 不是。

Oracle 各版本預設 Log 保存機制Oracle 各版本預設 Log 保存機制

Oracle DB 版本 ADR SHORTP_POLICY SHORT 類 Log ADR LONGP_POLICY LONG 類 Log(含 Alert Log) 備註
11g 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log ADR 自 11g 引入 (Oracle Docs)
12c 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log 12.1 / 12.2 基本相同 (Oracle Docs)
18c 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log (Oracle Docs)
19c 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log (Oracle Docs)
21c 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log (Oracle Docs)
23c 720 小時 = 30 天 Trace、Core dump、Packaging information 8760 小時 = 365 天 Incident information、Incident dump、Alert Log 23c 文件範例仍顯示 720 / 8760 (Oracle Docs)

所以你原本問的「只保留 1 個月」要修正成:


如果你說的是 Oracle ADR 的 Short-lived 診斷資料:11g ~ 23c 預設是 30 天。

但是:Alert Log 並不是預設只保存 30 天。Alert Log 屬於 ADR 的 LONGP_POLICY 類別,預設是:365 天(8760 小時)。

https://docs.oracle.com/cd/E24693_01/server.11203/e22490/adrci.htm?utm_source=chatgpt.com

但是 Redo Log 又完全不同。

Log 類型 11g~23c 預設保存概念
Online Redo Log ❌ 不是「保存 30 天」,而是循環使用
Archived Redo Log ❌ Oracle Standard Edition 沒有「固定 30 天」規定
Alert Log ADR LONGP_POLICY:預設 365 天
Trace Log ADR SHORTP_POLICY:預設 30 天
Incident Dump LONG:預設 365 天
Core Dump SHORT:預設 30 天
RMAN Backup 預設 retention policy 是 REDUNDANCY 1,不是 30 天

簡化

Oracle ADR Short ADR Long / Alert RMAN 是否「所有 DB Log 只留 1 個月」
11g 30 天 365 天 REDUNDANCY 1
12c 30 天 365 天 REDUNDANCY 1
18c 30 天 365 天 REDUNDANCY 1
19c 30 天 365 天 REDUNDANCY 1
21c 30 天 365 天 REDUNDANCY 1
23c 30 天 365 天 REDUNDANCY 1

(完)