温馨提示×

linux lsnrctl怎样调试

小樊
45
2026-10-07 23:43:21
栏目: 智能运维

在 Linux 下,lsnrctl 是 Oracle 监听程序(Listener) 的管理工具。所谓“调试”通常是指排查监听无法启动、连接不上、注册异常等问题。下面按常见场景给你一套实用调试方法。


一、基本调试命令(先会这些)

1. 查看监听状态

lsnrctl status

重点看:

  • Listener 是否 READY
  • 是否注册了实例(Services Summary)
  • 端口是否正确

2. 启动 / 停止监听(看报错)

lsnrctl start
lsnrctl stop

如果启动失败,错误信息通常在最后几行,这是最重要的调试线索。

3. 查看当前监听参数

lsnrctl show

常用:

lsnrctl show log_status
lsnrctl show trc_level

二、开启监听跟踪(真正“调试”)

1. 开启 Trace(跟踪文件)

lsnrctl
LSNRCTL> set trc_level admin
LSNRCTL> set trc_file listener.trc
LSNRCTL> set trc_directory /tmp
LSNRCTL> reload

级别说明:

  • off:关闭
  • user:基本
  • admin:详细(推荐调试用)
  • support:最详细(Oracle 支持用)

跟踪文件位置:

$ORACLE_HOME/network/trace/

二、查看日志(最常看)

监听日志路径

$ORACLE_HOME/network/log/listener.log

实时查看:

tail -f $ORACLE_HOME/network/log/listener.log

常见错误:

  • TNS-12545:地址不可用(IP/端口问题)
  • TNS-12541:监听未启动
  • TNS-12560:协议适配器错误

三、检查监听配置(listener.ora)

路径:

$ORACLE_HOME/network/admin/listener.ora

最小示例:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
  )

调试建议:

  • HOST 用 IP 而不是 hostname(避免 DNS 问题)
  • 确认端口未被占用:
netstat -tunlp | grep 1521

四、实例未注册到监听

1. 手动注册

ALTER SYSTEM REGISTER;

2. 检查 local_listener

SHOW PARAMETER local_listener;

如果为空且监听不在 1521:

ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=1521))';

五、客户端连接调试(tnsping)

tnsping ORCL

如果失败:

  • 检查 tnsnames.ora
  • 检查防火墙
telnet IP 1521

六、常见排错清单(快速)

✅ 监听是否启动
✅ IP / 端口是否正确
✅ 防火墙是否放行
✅ listener.ora 是否配置正确
✅ 实例是否注册
✅ 跟踪日志 + listener.log


如果你愿意,可以把:

  • lsnrctl status 输出
  • listener.log 报错
  • Oracle 版本

贴出来,我可以帮你精准定位问题。

0 踩