lsnrctl(Oracle Listener Control)命令超时,通常表现为执行 lsnrctl status / start / stop 等命令时长时间无响应或报 TNS-12535: TNS:operation timed out 之类错误。下面按常见原因 → 排查步骤 → 解决办法来说明。
常见报错:
TNS-12535: TNS:operation timed outTNS-12545: Connect failed because target host or object does not existTNS-00515: Connect timeout occurredlsnrctl 命令卡住几十秒甚至几分钟原因:
listener.ora 中 HOST 写成了主机名,但:
/etc/hosts 配置错误解决办法:
# listener.ora 示例
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
✅ 建议:
127.0.0.1 或本机 IP排查:
hostname
ping $(hostname)
如果 ping 主机名 很慢或失败:
解决:
编辑 /etc/hosts
vi /etc/hosts
确保有:
127.0.0.1 localhost
192.168.1.10 dbserver
并确认 hostname 能在 hosts 中解析。
排查:
telnet 127.0.0.1 1521
# 或
netstat -tulnp | grep 1521
解决:
systemctl stop firewalld
排查:
ps -ef | grep tnslsnr
解决:
lsnrctl stop
lsnrctl start
如果 stop 也超时:
kill -9 <pid>
lsnrctl start
现象:
lsnrctl 能执行检查:
echo $ORACLE_HOME
echo $ORACLE_SID
which lsnrctl
解决:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
检查:
$ORACLE_HOME/network/admin/sqlnet.ora
如存在:
SQLNET.INBOUND_CONNECT_TIMEOUT=0
可临时注释测试。
ping 主机名 是否快listener.ora 是否用 IPtelnet IP 1521 是否通ps -ef | grep tnslsnrlsnrctl status 是否仍超时LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
如果你愿意,可以把下面信息发我,我可以精准判断:
listener.ora我可以一步一步帮你排。