Oracle 数据库使用多种类型的日志文件来保障数据一致性、支持恢复、记录操作行为以及辅助诊断。以下是 Oracle 主要日志类型 的详细说明,包括其作用、存储路径和查看方式。
✅ 1. 警报日志(Alert Log / alert_.log)
🔹 作用
- 记录数据库 启动/关闭 、关键错误 (如 ORA- 错误)、参数变更 、检查点 、归档切换 等重要事件。
- 是 DBA 日常监控和故障排查的 首要日志。
🔹 默认路径(自动诊断仓库 ADR)
从 Oracle 11g 开始,日志统一存放在 ADR(Automatic Diagnostic Repository) 中:
-- 查询路径
SELECT * FROM V $ DIAG_INFO WHERE NAME = 'Diag Trace';
典型路径:
$ ORACLE_BASE/diag/rdbms/<DB_NAME>/<INSTANCE>/trace/alert_<SID>.log
例如:
/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
💡 注意:
alert.log是文本文件,可用tail -f实时监控。
✅ 2. 跟踪日志(Trace Files)
🔹 作用
- 记录 会话级或进程级 的详细诊断信息,用于性能调优、SQL 跟踪、错误分析。
- 包括:
- 用户会话跟踪(如启用
SQL_TRACE) - 后台进程跟踪(如 DBWn、LGWR、PMON)
- 错误时生成的
.trc文件(含 call stack)
- 用户会话跟踪(如启用
🔹 文件命名规则
<SID>_<PROCESS>_<PID>.trc
例如:orcl_ora_12345.trc(用户会话)
例如:orcl_dbw0_6789.trc(DBWR 进程)
🔹 路径
与 Alert Log 相同:
$ ORACLE_BASE/diag/rdbms/<DB_NAME>/<INSTANCE>/trace/
🔹 如何生成特定会话的 trace?
-- 当前会话开启 SQL 跟踪
ALTER SESSION SET SQL_TRACE = TRUE;
-- 或使用 10046 事件(更详细)
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE(waits=>TRUE, binds=>TRUE);
Oracle 的跟踪日志(Trace Files) 是数据库诊断和性能调优的核心工具。它们记录了会话、进程或错误发生时的详细内部信息。下面从 命名规则、分类、识别方法、路径、用途 等角度,全面详解 Oracle 跟踪日志。
✅ 一、跟踪日志的总体分类
Oracle 跟踪日志主要分为三类:
表格
| 类型 | 生成主体 | 触发条件 | 典型用途 |
|---|---|---|---|
| 用户会话跟踪文件(User Trace) | 用户会话(Server Process) | 手动启用 SQL_TRACE / 10046 事件,或会话报错 | SQL 性能分析、绑定变量、等待事件 |
| 后台进程跟踪文件(Background Trace) | 后台进程(PMON, SMON, DBWn, LGWR 等) | 进程启动、出错、内部事件触发 | 实例故障诊断、死锁、内部错误(ORA-600) |
| 意外/错误跟踪文件(Incident Trace) | 任意进程 | 发生严重错误(如 ORA-00600, ORA-07445) | 提供给 Oracle Support 分析 bug |
💡 所有跟踪文件都存放在 ADR(Automatic Diagnostic Repository) 的
trace目录下(11g 及以后)。
✅ 二、跟踪日志的命名规则(关键!)
📌 通用格式(Linux/Unix):
<sid>_<process_name>_<pid>.trc
🔍 各部分含义:
表格
| 部分 | 说明 | 示例 |
|---|---|---|
<sid> |
数据库实例名(ORACLE_SID) | orcl, cdb1 |
<process_name> |
进程类型标识 | ora(用户会话)、pmon、smon、dbw0、lms0(RAC)等 |
<pid> |
操作系统进程 ID(Process ID) | 12345 |
.trc |
跟踪文件扩展名 | .trc |
.trm |
跟踪元数据文件(可选,用于 ADR 索引) | .trm |
🧩 常见命名示例及含义:
表格
| 文件名 | 类型 | 说明 |
|---|---|---|
orcl_ora_12345.trc |
用户会话跟踪 | 用户会话(PID=12345)产生的 trace,通常由 SQL_TRACE 或错误触发 |
orcl_pmon_6789.trc |
后台进程跟踪 | PMON 进程(PID=6789)的日志,记录实例恢复、会话清理等 |
orcl_dbw0_1011.trc |
后台进程跟踪 | DBWR 进程(第 0 个)的日志,可能包含写入延迟、检查点信息 |
orcl_m000_2021.trc |
MMON 或作业进程 | 自动任务(如 AWR 快照)产生的 trace |
cdb1_ora_3030.trc_cdmp_20260130143000 |
错误转储(Incident) | 因 ORA-00600 等错误自动生成的完整 dump 包 |
⚠️ Windows 系统中,PID 可能被线程 ID 替代,且使用反斜杠路径。
✅ 三、如何区分每个跟踪日志的类型?
方法 1:看文件名中的 <process_name>
表格
| 关键词 | 类型 | 说明 |
|---|---|---|
ora |
用户会话 | 最常见,由客户端连接产生 |
pmon / smon / ckpt / lgwr / dbw0... |
后台进程 | 对应 Oracle 后台进程 |
m000 / j000 |
作业或 MMON 进程 | 自动维护任务 |
_cdmp_ |
错误转储包 | 由 ADRCI 自动打包,含多个文件 |
方法 2:查看文件内容开头
打开 .trc 文件,前几行通常包含:
*** 2026-01-30 14:30:00.123
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
...
*** SESSION ID:(123.45678) 2026-01-30 14:30:00.123
*** CLIENT ID:() 2026-01-30 14:30:00.123
*** SERVICE NAME:(SYS $ USERS) 2026-01-30 14:30:00.123
*** MODULE NAME:(rman@host (TNS V1-V3)) 2026-01-30 14:30:00.123
*** ACTION NAME:() 2026-01-30 14:30:00.123
- 如果有
MODULE NAME: (rman...)→ RMAN 会话 - 如果有
SESSION ID但无后台进程名 → 用户会话 - 如果开头是
PMON started with pid=...→ 后台进程
方法 3:通过 SQL 查询当前会话的 trace 文件名
-- 查询当前会话的 trace 文件路径
SELECT s.sid, s.serial#, p.spid, i.value || '/' ||
LOWER(d.instance_name) || '_ora_' || p.spid || '.trc' AS trace_file
FROM v $ session s, v $ process p, v $ diag_info i, v $ instance d
WHERE s.paddr = p.addr
AND s.audsid = SYS_CONTEXT('USERENV', 'SESSIONID')
AND i.name = 'Diag Trace';
输出示例:
SID SERIAL# SPID TRACE_FILE
---- ------- ------ --------------------------------------------
123 45678 12345 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/orcl_ora_12345.trc
✅ 四、特殊跟踪文件:带 tracefile_identifier
你可以通过设置会话参数为 trace 文件"打标签",便于识别:
ALTER SESSION SET tracefile_identifier = 'MY_TEST_20260130';
ALTER SESSION SET SQL_TRACE = TRUE;
生成的文件名变为:
orcl_ora_12345_MY_TEST_20260130.trc
✅ 强烈推荐在生产环境使用此方法,避免混淆多个 trace 文件。
✅ 五、跟踪日志的存储路径
统一在 ADR 的 trace 目录下:
-- 查询路径
SELECT VALUE FROM V $ DIAG_INFO WHERE NAME = 'Diag Trace';
典型路径:
$ ORACLE_BASE/diag/rdbms/<DB_UNIQUE_NAME>/<INSTANCE_NAME>/trace/
例如:
/u01/app/oracle/diag/rdbms/prod/PROD1/trace/
💡 注意:
<DB_UNIQUE_NAME>不一定是 SID,可能是db_unique_name参数值。
✅ 六、总结:快速识别跟踪日志类型
表格
| 特征 | 日志类型 |
|---|---|
文件名含 _ora_ |
用户会话跟踪 |
文件名含 _pmon_, _smon_, _dbw0_ |
后台进程跟踪 |
文件名含 _cdmp_ 或在 incident 目录 |
错误转储包 |
文件内容有 SESSION ID 和 MODULE NAME |
用户会话(可进一步看模块名) |
文件由 ALTER SESSION SET SQL_TRACE 生成 |
性能分析 trace |
| 文件由 ORA-00600 错误触发 | 内部错误 trace(需提交 Oracle Support) |
✅ 3. 重做日志(Redo Log)
🔹 作用
- 记录 所有对数据库的修改操作 (INSERT/UPDATE/DELETE),用于 实例恢复 和 介质恢复。
- 是数据库 ACID 特性中持久性(Durability)的核心保障。
🔹 类型
- 在线重做日志(Online Redo Log):当前正在使用的日志组,循环写入。
- 归档重做日志(Archived Redo Log):在线日志切换后归档保存(仅在 ARCHIVELOG 模式下)。
🔹 查看路径
-- 在线日志路径
SELECT GROUP#, MEMBER FROM V $ LOGFILE;
-- 归档日志路径
SHOW PARAMETER log_archive_dest;
-- 或
SELECT DEST_NAME, DESTINATION FROM V $ ARCHIVE_DEST WHERE STATUS = 'VALID';
典型路径:
- 在线日志:
+DATA/ORCL/ONLINELOG/group_1.261.1234567890(ASM)或/u01/oradata/ORCL/redo01.log - 归档日志:
USE_DB_RECOVERY_FILE_DEST(默认为闪回区)或自定义路径如/archivelog/
✅ 4. 归档日志(Archive Log)
🔹 作用
- 保存 历史重做日志 ,用于:
- 时间点恢复(PITR)
- Data Guard / ADG 同步
- RMAN 增量备份恢复
🔹 存储位置
由 LOG_ARCHIVE_DEST_n 参数控制,默认使用闪回恢复区(FRA):
SHOW PARAMETER db_recovery_file_dest;
-- 例如:/u01/fra
🔹 查看归档日志列表
SELECT NAME, SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V $ ARCHIVED_LOG ORDER BY SEQUENCE#;
✅ 5. 审计日志(Audit Trail)
🔹 作用
- 记录 用户操作行为(如登录、DDL、DML),用于安全合规和审计。
🔹 存储方式(两种)
表格
| 方式 | 说明 | 路径 / 查看方式 |
|---|---|---|
| 数据库审计(AUDIT_TRAIL=DB) | 写入 SYS.AUD $ 表 |
SELECT * FROM DBA_AUDIT_TRAIL; |
| 操作系统审计(AUDIT_TRAIL=OS) | 写入文件 | $ ORACLE_BASE/admin/<SID>/adump/ |
⚠️ 默认情况下,审计可能未启用。可通过
SHOW PARAMETER audit_trail;查看。
✅ 6. 监听器日志(Listener Log)
🔹 作用
- 记录 客户端连接请求 、监听器启动/停止 、网络错误 等。
🔹 路径
$ ORACLE_HOME/network/log/listener.log
💡 可通过
lsnrctl status查看监听器配置。
✅ 7. SBT I/O 日志(sbtio.log)
🔹 作用
- 当使用 RMAN + SBT(磁带/云备份) 时,记录 RMAN 与 SBT 插件(如 NetBackup、Commvault)的交互。
🔹 路径
通常在:
$ ORACLE_HOME/rdbms/log/sbtio.log
或由 SBT 插件自定义路径(如你的 /opt/DRDBClient_.../log/)
✅ 8. 控制文件(Control File)------虽非"日志",但常被混淆
🔹 作用
- 记录数据库 物理结构元数据:数据文件、重做日志位置、SCN、检查点等。
- 不是日志文件,但对恢复至关重要。
🔹 路径
SELECT NAME FROM V $ CONTROLFILE;
📂 总结:Oracle 日志类型速查表
表格
| 日志类型 | 作用 | 默认路径 | 关键视图/命令 |
|---|---|---|---|
| Alert Log | 实例关键事件 | $ ADR_HOME/trace/alert_<SID>.log |
V $ DIAG_INFO |
| Trace Files | 会话/进程诊断 | $ ADR_HOME/trace/ |
ALTER SESSION SET SQL_TRACE |
| Redo Log | 记录数据变更 | V $ LOGFILE |
V $ LOG, V $ LOGFILE |
| Archive Log | 归档重做日志 | LOG_ARCHIVE_DEST_n |
V $ ARCHIVED_LOG |
| Audit Log | 用户操作审计 | OS: $ ORACLE_BASE/admin/<SID>/adump/ DB: SYS.AUD $ |
DBA_AUDIT_TRAIL |
| Listener Log | 网络连接日志 | $ ORACLE_HOME/network/log/ |
lsnrctl |
| SBT I/O Log | RMAN 备份插件日志 | $ ORACLE_HOME/rdbms/log/sbtio.log |
--- |
| Control File | 数据库元数据 | V $ CONTROLFILE |
V $ CONTROLFILE |