在 Ubuntu 上 lsnrctl 连不上(通常是 Oracle Listener 无法启动或无法连接),常见原因和排查思路如下:
which lsnrctl
如果没有,说明 Oracle 客户端/服务端未正确安装或未加入 PATH。
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
lsnrctl status
如果报错:
TNS-12541: TNS:no listener → listener 没启动TNS-12545: Connect failed → 主机名/IP 问题启动:
lsnrctl start
vi $ORACLE_HOME/network/admin/listener.ora
常见错误:
HOST = localhost
建议改为:
HOST = 127.0.0.1
或服务器实际 IP。
修改后:
lsnrctl reload
Ubuntu 默认 /etc/hosts 可能不完整:
hostname
假设输出:ubuntu01
检查:
cat /etc/hosts
应有:
127.0.0.1 localhost
127.0.1.1 ubuntu01
否则 Oracle listener 会启动失败。
netstat -tunlp | grep 1521
或
ss -tunlp | grep 1521
必须用 oracle 用户
su - oracle
lsnrctl start
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 | 服务未注册 |
如果你愿意,可以把以下信息贴出来,我可以直接帮你定位:
lsnrctl status 报错内容listener.ora 内容