插件窝 干货文章 linux中的oracle监听日志在哪

linux中的oracle监听日志在哪

Listener Oracle 日志 hostname 498    来源:    2025-04-14

在Linux系统中,Oracle的监听日志(Listener Log)默认存储在以下位置:

默认路径

$ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log

详细说明:

  1. 环境变量依赖

    • $ORACLE_BASE 是Oracle的基础目录(如 /u01/app/oracle)。
    • <hostname> 是服务器的主机名(可通过 hostname 命令查看)。
  2. 通过监听状态直接定位
    执行以下命令可动态获取日志路径:

    lsnrctl status
    

    输出中会显示类似以下信息:

    Listening Endpoints Summary...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=your_hostname)(PORT=1521)))
    The listener supports no services
    Log messages written to /u01/app/oracle/diag/tnslsnr/hostname/listener/trace/listener.log
    
  3. 其他相关日志文件

    • 报警日志(Alert Log)
      $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/alert/log.xml
    • 备份日志:旧日志可能被归档为 listener.log_<timestamp>

自定义路径的情况

如果监听配置(listener.ora)中指定了 LOG_DIRECTORY 参数,则日志会存储在自定义路径。检查方法:

cat $ORACLE_HOME/network/admin/listener.ora | grep LOG_DIRECTORY

权限问题

如果无法访问日志,可能需要切换至Oracle用户:

sudo su - oracle
ls -l $ORACLE_BASE/diag/tnslsnr/$(hostname)/listener/trace/listener.log

日志轮转

Oracle会自动轮转日志。如需手动清理,建议使用 adrci 工具或直接备份后清空文件(需确保监听服务不受影响)。

示例(假设主机名为 db-server):

# 查看日志路径
ls /u01/app/oracle/diag/tnslsnr/db-server/listener/trace/

# 实时监控日志
tail -f /u01/app/oracle/diag/tnslsnr/db-server/listener/trace/listener.log

如果仍有疑问,请提供 lsnrctl status 的输出以便进一步分析。