在 Debian 上 lsnrctl 连接不上(通常报 TNS-12541、TNS-12560、No listener、Connection refused 等),常见原因和排查思路如下:
最常见原因
lsnrctl status
如果提示:
TNS-12541: TNS:no listener
说明监听器未启动。
启动方式:
lsnrctl start
若失败,看报错信息(权限、配置、端口)。
检查:
$ORACLE_HOME/network/admin/listener.ora
常见问题:
示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
Debian 默认不会自动加载 Oracle 环境。
必须确认:
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH
正确示例:
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
⚠️ 用 su oracle 而不是 su - oracle 很容易导致环境变量丢失。
oracle 用户执行 lsnrctlid
whoami
正确做法:
su - oracle
lsnrctl status
netstat -tlnp | grep 1521
# 或
ss -tlnp | grep 1521
iptables -L
# 或
ufw status
开放端口:
ufw allow 1521/tcp
查看日志:
$ORACLE_HOME/network/log/listener.log
常见错误:
TNS-12545: Connect failed because target host or object does not existTNS-12537: TNS:connection closedPermission denied某些 Oracle 版本在 Debian 上缺库:
ldd $ORACLE_HOME/bin/lsnrctl
缺库需安装:
apt install libaio1
oracle 用户ORACLE_HOME / ORACLE_SIDlsnrctl start 是否成功listener.ora 是否正确如果你愿意,可以把下面信息发我,我可以精准判断:
lsnrctl status 完整输出listener.ora 内容我可以一步一步帮你定位。