[研究]為何有人說 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 自己設定了例如:
|
這代表 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 | ❌ |
(完)