温馨提示×

ubuntu lsnrctl为何连不上

小樊
46
2026-10-17 01:16:04
栏目: 智能运维

在 Ubuntu 上 lsnrctl 连不上(通常是 Oracle Listener 无法启动或无法连接),常见原因和排查思路如下:


一、确认环境是否正确

  1. lsnrctl 是否存在
which lsnrctl

如果没有,说明 Oracle 客户端/服务端未正确安装或未加入 PATH。

  1. 环境变量是否正确
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH

通常需要:

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

二、listener 是否启动

lsnrctl status

如果报错:

  • TNS-12541: TNS:no listener → listener 没启动
  • TNS-12545: Connect failed → 主机名/IP 问题

启动:

lsnrctl start

三、最常见原因(Ubuntu 特有)

1. listener.ora 中 HOST 写错

vi $ORACLE_HOME/network/admin/listener.ora

常见错误:

HOST = localhost

建议改为:

HOST = 127.0.0.1

或服务器实际 IP。

修改后:

lsnrctl reload

2. Ubuntu 主机名解析问题(非常常见)

Ubuntu 默认 /etc/hosts 可能不完整:

hostname

假设输出:ubuntu01

检查:

cat /etc/hosts

应有:

127.0.0.1   localhost
127.0.1.1   ubuntu01

否则 Oracle listener 会启动失败。


3. 端口被占用

netstat -tunlp | grep 1521

或

ss -tunlp | grep 1521

4. 权限问题(不要 root 启动)

必须用 oracle 用户

su - oracle
lsnrctl start

四、防火墙 / SELinux

Ubuntu 默认无 SELinux,但可能启用 UFW:

ufw status

如需开放:

ufw allow 1521/tcp

五、日志定位(最重要)

查看 listener 日志:

tail -f $ORACLE_HOME/network/log/listener.log

六、典型错误速查

错误 原因
TNS-12541 listener 未启动
TNS-12545 HOST 配置错误
TNS-03505 listener.ora 找不到
ORA-12514 服务未注册

如果你愿意,可以把以下信息贴出来,我可以直接帮你定位:

  1. lsnrctl status 报错内容
  2. listener.ora 内容
  3. Ubuntu 版本 + Oracle 版本

0 踩