温馨提示×

debian lsnrctl连接失败咋办

小樊
41
2026-09-30 18:35:47
栏目: 智能运维

在 Debian 上 lsnrctl 连接失败,通常出现在 Oracle 数据库 / Oracle 监听(Listener) 环境中。下面按常见原因 → 排查步骤 → 解决办法给你一个实用清单。


一、先确认最基本的几件事

1️⃣ 你是不是在 Oracle 用户下执行的?

lsnrctl 必须在 Oracle 用户下运行(通常是 oracle)。

su - oracle
which lsnrctl

如果提示:

lsnrctl: command not found

说明环境变量没加载。


2️⃣ 环境变量是否正确

在 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)


二、常见错误及对应解决方法

❌ 错误 1:TNS-12541: TNS:no listener

说明:监听器没启动

解决:

lsnrctl start

查看状态:

lsnrctl status

❌ 错误 2: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

❌ 错误 3:TNS-12555: TNS:permission denied

Debian 上常见原因:

  • 不是 oracle 用户
  • /tmp 权限异常

检查:

ls -ld /tmp

应为:

drwxrwxrwt

修复:

chmod 1777 /tmp

❌ 错误 4:Debian 下监听启动但本地连不上

可能是 hostname 解析问题

hostname
cat /etc/hosts

确保有:

127.0.0.1   localhost
127.0.1.1   your-hostname

三、防火墙 & 端口问题(Debian)

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),我可以精准帮你定位。

0 踩