温馨提示×

debian lsnrctl连接不上原因

小樊
47
2026-10-03 16:21:54
栏目: 智能运维

在 Debian 上 lsnrctl 连接不上(通常报 TNS-12541、TNS-12560、No listener、Connection refused 等),常见原因和排查思路如下:


一、监听器根本没启动

最常见原因

lsnrctl status

如果提示:

TNS-12541: TNS:no listener

说明监听器未启动。

启动方式:

lsnrctl start

若失败,看报错信息(权限、配置、端口)。


二、listener.ora 配置问题

检查:

$ORACLE_HOME/network/admin/listener.ora

常见问题:

  • HOST 写错(应为 IP 或 hostname)
  • PORT 被占用(默认 1521)
  • SID / SERVICE_NAME 不匹配

示例:

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

三、Oracle 环境变量未设置(Debian 特有坑)

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 用户执行 lsnrctl
  • 监听器日志目录无写权限
id
whoami

正确做法:

su - oracle
lsnrctl status

五、端口被占用或防火墙拦截

1️⃣ 端口检查

netstat -tlnp | grep 1521
# 或
ss -tlnp | grep 1521

2️⃣ 防火墙(Debian 常见)

iptables -L
# 或
ufw status

开放端口:

ufw allow 1521/tcp

六、listener.log 报错(最关键)

查看日志:

$ORACLE_HOME/network/log/listener.log

常见错误:

  • TNS-12545: Connect failed because target host or object does not exist
  • TNS-12537: TNS:connection closed
  • Permission denied

七、Debian 系统库问题(较少但存在)

某些 Oracle 版本在 Debian 上缺库:

ldd $ORACLE_HOME/bin/lsnrctl

缺库需安装:

apt install libaio1

快速排查清单 ✅

  1. 是否 oracle 用户
  2. 是否设置 ORACLE_HOME / ORACLE_SID
  3. lsnrctl start 是否成功
  4. listener.ora 是否正确
  5. 1521 端口是否监听
  6. 防火墙是否放行

如果你愿意,可以把下面信息发我,我可以精准判断:

  • lsnrctl status 完整输出
  • listener.ora 内容
  • Debian 版本 + Oracle 版本

我可以一步一步帮你定位。

0 踩