在 Debian 上 lsnrctl 连接失败,通常出现在 Oracle 数据库 / Oracle 监听(Listener) 环境中。下面按常见原因 → 排查步骤 → 解决办法给你一个实用清单。
lsnrctl 必须在 Oracle 用户下运行(通常是 oracle)。
su - oracle
which lsnrctl
如果提示:
lsnrctl: command not found
说明环境变量没加载。
在 oracle 用户下检查:
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH
正常应类似:
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
PATH 包含 $ORACLE_HOME/bin
如没有:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
(建议写进 ~/.bash_profile)
TNS-12541: TNS:no listener说明:监听器没启动
解决:
lsnrctl start
查看状态:
lsnrctl status
TNS-12545: Connect failed because target host or object does not exist说明:
listener.ora 配置错误检查:
cat $ORACLE_HOME/network/admin/listener.ora
示例正确配置:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
然后:
lsnrctl reload
TNS-12555: TNS:permission deniedDebian 上常见原因:
检查:
ls -ld /tmp
应为:
drwxrwxrwt
修复:
chmod 1777 /tmp
可能是 hostname 解析问题
hostname
cat /etc/hosts
确保有:
127.0.0.1 localhost
127.0.1.1 your-hostname
Debian 默认用 nftables 或 iptables
查看端口:
ss -lntp | grep 1521
如果没监听:
lsnrctl start
开放端口(如需要):
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
su - oracle
export ORACLE_HOME=...
export PATH=$ORACLE_HOME/bin:$PATH
lsnrctl status
如果还不行,把完整报错信息贴出来(例如 TNS-xxxxx),我可以精准帮你定位。