Linux 上 Oracle 日志文件位置与查看方法
一、常用日志类型与默认位置
- 下表汇总了日常排障最常用的日志、默认目录结构与快速查看方式(以 ORACLE_SID=orcl 为例,实际以你的环境为准):
| 日志类型 |
默认路径(ADR,11g/12c/19c/21c) |
传统路径(10g 及更早) |
快速查看 |
| 数据库告警日志 Alert |
$ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log(文本) $ORACLE_BASE/diag/rdbms/orcl/orcl/alert/log.xml(XML) |
$ORACLE_BASE/admin/orcl/bdump/alert_orcl.log |
tail/grep 文本;或用 adrci 查看 |
| 后台/用户进程跟踪文件 Trace |
$ORACLE_BASE/diag/rdbms/orcl/orcl/trace/ |
$ORACLE_BASE/admin/orcl/bdump/(后台) $ORACLE_BASE/admin/orcl/udump/(用户) |
按进程名或 SPID 定位 .trc |
| 监听日志 Listener |
$ORACLE_HOME/network/log/(常见为 listener.log) |
同左 |
tail/grep |
| RAC 集群件日志 |
$GRID_HOME/log/<节点名>/(如 crsd.log、cssd.log、ohasd.log 等) |
同左 |
tail/grep |
- 说明:
- 自 11g 起 Oracle 使用 ADR(Automatic Diagnostic Repository),告警与跟踪统一在 $DIAGNOSTIC_DEST/rdbms/<db_name>//trace|alert 下;10g 及更早使用 bdump/udump 目录。
- $DIAGNOSTIC_DEST 缺省通常为 $ORACLE_BASE;若未设置,则回退到 $ORACLE_HOME/log。
- 监听日志 位置由 $ORACLE_HOME/network/log 下的配置决定,若 listener.ora 自定义了 LOG_DIRECTORY_listener,则以自定义目录为准。
二、在数据库中快速定位路径
- 查看 ADR 根目录与关键目录:
- SQL> show parameter diagnostic_dest
- SQL> select name, value from v$diag_info where name in (‘Diag Alert’,‘Diag Trace’);
- 兼容旧参数(10g/11g 早期常用):
- SQL> show parameter background_dump_dest
- SQL> show parameter user_dump_dest
- 直接查询告警日志文本路径(实例级):
- SQL> select value from v$parameter where name=‘background_dump_dest’;
- 说明:
- 在 11g+ 即使未显式设置 BACKGROUND_DUMP_DEST,告警与跟踪也会写入 ADR 相应目录;在 10g 则依赖上述 *_DUMP_DEST 参数。
三、常用查看命令示例
- 实时查看告警日志(文本格式):
- Linux> tail -f $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log
- 或用 adrci:
- Linux> $ORACLE_HOME/bin/adrci
- adrci> set home orcl
- adrci> show alert -tail -f
- 查看监听日志:
- Linux> tail -f $ORACLE_HOME/network/log/listener.log
- 按关键字过滤告警日志(如 ORA- 错误):
- Linux> grep -i “ORA-” $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log
- 或用 adrci:
- adrci> show alert -p “message_text like ‘%ORA-%’”
- 查看数据库重做日志成员(Redo Log Files):
- SQL> select group#, member from v$logfile order by group#;
- 说明:
- adrci 是 Oracle 提供的诊断信息命令行工具,适合在 ADR 中检索 alert 与 trace。
四、RAC 与 Grid 基础设施日志位置
- 数据库实例告警日志(每个节点):
- $ORACLE_BASE/diag/rdbms/<db_name>//trace/alert_.log
- Grid 集群件日志(每个节点,目录以节点名为子目录):
- $GRID_HOME/log/<节点名>/(如 alert.log、crsd/crsd.log、cssd/cssd.log、ohasd/ohasd.log、evmd/evmd.log 等)
- 说明:
- RAC 环境下,各实例告警与跟踪仍写入各自的 ADR 目录;集群件(CRS/OHASD/CSSD 等)日志集中在 $GRID_HOME/log 下按节点分层。