在 Linux 下,lsnrctl 是 Oracle 监听程序(Listener) 的管理工具。所谓“调试”通常是指排查监听无法启动、连接不上、注册异常等问题。下面按常见场景给你一套实用调试方法。
lsnrctl status
重点看:
READYServices Summary)lsnrctl start
lsnrctl stop
如果启动失败,错误信息通常在最后几行,这是最重要的调试线索。
lsnrctl show
常用:
lsnrctl show log_status
lsnrctl show trc_level
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:协议适配器错误路径:
$ORACLE_HOME/network/admin/listener.ora
最小示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
调试建议:
netstat -tunlp | grep 1521
ALTER SYSTEM REGISTER;
SHOW PARAMETER local_listener;
如果为空且监听不在 1521:
ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=1521))';
tnsping ORCL
如果失败:
tnsnames.oratelnet IP 1521
✅ 监听是否启动
✅ IP / 端口是否正确
✅ 防火墙是否放行
✅ listener.ora 是否配置正确
✅ 实例是否注册
✅ 跟踪日志 + listener.log
如果你愿意,可以把:
lsnrctl status 输出listener.log 报错贴出来,我可以帮你精准定位问题。