根本原因是客户端连接请求未被监听程序接收,即“无人接电话”;常见于监听虽启动但绑定地址不可达、tnsnames.ora与listener.ora的host/port不一致、防火墙拦截、动态注册未完成或数据库未open等隐蔽配置问题。

根本原因只有一个:客户端发出去的连接请求,没被监听程序收到。不是数据库挂了,也不是密码错了,而是压根没人“接电话”。
lsnrctl status 显示监听已启动,但还是报 TNS-12541
这很常见——lsnrctl status 返回正常,不代表它真在监听你期望的地址和端口。
- 检查输出里
Listening Endpoints Summary...那一节,确认(ADDRESS=(PROTOCOL=TCP)(HOST=...)(PORT=...))中的HOST值是否可被客户端解析(比如写成了服务器主机名,但客户端 hosts 里没映射) - 如果
HOST是localhost或127.0.0.1,那只有本机程序能连;远程客户端必须用服务器真实 IP 或可解析的域名 - Linux 下注意 SELinux 或防火墙是否拦截了
PORT(默认 1521),用telnet server_ip 1521从客户端实测连通性 -
lsnrctl status成功只说明监听进程活着,不保证它加载了正确的listener.ora—— 检查lsnrctl status输出顶部的 “Listener Parameter File” 路径是否是你修改的那个
tnsnames.ora 和 listener.ora 的 HOST/PORT 不一致
这是导致 TNS-12541 最隐蔽也最常被忽略的配置错误。
- 客户端通过
tnsnames.ora里的HOST和PORT去连;监听器靠listener.ora里的ADDRESS绑定端口。两者必须完全对得上 - 例如:
tnsnames.ora写的是(HOST=db-server)(PORT=1521),但listener.ora里却是(HOST=127.0.0.1)(PORT=1521)→ 客户端连db-server:1521,监听器只守在127.0.0.1:1521,自然收不到 - Windows 上服务名容易混淆:
OracleOraDb19c_home1TNSListener对应的配置文件路径可能和你认为的ORACLE_HOME不一致,用echo $ORACLE_HOME或注册表查准实际路径
监听器启动后不显示服务实例(SID 或 SERVICE_NAME)
TNS-12541 有时是假象——监听器其实在跑,但没注册任何数据库实例,导致连接请求进来后无处转发,直接断开,客户端就收到“no listener”。
- 运行
lsnrctl services,看输出里是否有你的SID_NAME或SERVICE_NAME;如果没有,说明数据库实例没向监听器注册 - 检查数据库中
local_listener参数:登录sqlplus / as sysdba后执行show parameter local_listener,若为空或指向错误地址,执行alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both; - 确认数据库状态是
OPEN,不是MOUNTED或STARTED;只有 OPEN 状态才会自动注册到监听器(除非关了动态注册) - 动态注册默认 60 秒触发一次,刚启动监听器就立刻连,可能还没注册完,稍等再试或手动执行
alter system register;
Easy Connect 连接方式下仍报错
用 sqlplus user/pass@host:port/service_name 这种写法时,TNS-12541 通常意味着网络层就失败了。
- 这个语法绕过了
tnsnames.ora,所以问题一定出在 DNS 解析、IP 可达性或端口监听本身 - 先在客户端执行
ping host,再执行telnet host port(或nc -zv host port);不通就不是 Oracle 配置问题,是网络或防火墙问题 - 注意:某些 Oracle 版本(如 12c+)默认禁用
SECURE_REGISTER_LISTENER,如果监听器配置了 IPC 协议但客户端走 TCP,也可能静默失败 - Windows 上杀毒软件或 Windows Defender 有时会拦截
tnslsnr进程绑定端口,临时禁用测试一下
真正麻烦的从来不是“监听器没启”,而是它启了、绑了、也听了,但绑定地址不可达、配置文件被多版本覆盖、或者注册机制卡在半路——这些地方不打日志、不报错,只安静地让连接超时。排查时别只盯 lsnrctl start 是否成功,要盯它到底在听哪儿、谁在往哪儿发、中间有没有被拦住。











