在 Debian 上调试 lsnrctl(Oracle Listener 控制工具)时,常见目标是确认监听是否启动、为什么连不上、配置是否正确。下面按“排查思路 + 常用命令 + 常见问题”给你一个实用指南。
lsnrctl 是否安装which lsnrctl
通常路径:
$ORACLE_HOME/bin/lsnrctl
如果没有:
echo $ORACLE_HOME
若为空,说明环境变量没配好。
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
建议写入:
~/.bashrc
lsnrctl status
常见问题:
TNS-12541: TNS:no listener → 监听没启动TNS-12560: TNS:protocol adapter error → 环境变量错误lsnrctl start
指定监听名(如果有多个):
lsnrctl start LISTENER
lsnrctl stop
lsnrctl show log_directory
通常位置:
$ORACLE_HOME/network/log/listener.log
实时查看:
tail -f $ORACLE_HOME/network/log/listener.log
$ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
修改后重启监听:
lsnrctl reload
✅ 检查端口是否监听:
ss -lntp | grep 1521
✅ 测试本地连接:
sqlplus system/password@localhost:1521/orcl
通常是:
ORACLE_HOME 不对listener.ora 中 HOST 写错✅ 检查防火墙:
iptables -L -n
# 或
ufw status
apt install libaio1 bc
lsnrctl set trc_level admin
查看 trace 文件:
lsnrctl show trc_file
关闭:
lsnrctl set trc_level off
tnsping ORCL
✅ 环境变量
✅ listener.ora 配置
✅ listener.log
✅ 端口监听
✅ 防火墙
✅ 客户端 tnsnames.ora
如果你愿意,可以把下面信息贴出来,我可以直接帮你定位问题:
lsnrctl status 输出listener.log 报错TNS-xxxxx)我可以按你的具体错误一步步带你修。