You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程连接Oracle 19C时出现ORA-12541: TNS:无监听程序错误求助

解决Oracle 19C远程连接ORA-12541错误的方案

核心问题分析

你遇到的ORA-12541: TNS:no listener错误,本质是客户端(机器A)无法找到目标机器(B)上运行的Oracle监听服务。你当前提供的是机器A的配置,但问题根源在机器B的监听配置上。

关键修复步骤

1. 修改机器B的listener.ora配置

机器B的监听如果绑定localhost,只会监听本地127.0.0.1的请求,外部机器无法访问。需要修改监听的绑定地址:

  • 打开机器B的listener.ora文件(通常在$ORACLE_HOME/network/admin目录下)
  • 将HOST = localhost替换为机器B的实际IP(比如192.168.1.11),或者用0.0.0.0允许所有IP访问:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

2. 重启机器B的监听服务

在机器B的命令行执行:

lsnrctl stop
lsnrctl start

执行lsnrctl status检查监听状态,确认输出的ADDRESS项包含机器B的外部IP,而非仅localhost。

3. 验证监听可达性

在机器A上执行以下命令测试监听连通性:

tnsping 192.168.1.11:1521/orcl

如果返回OK,再尝试用原sqlplus命令连接。

4. 确认监听已注册目标服务

如果tnsping通了但仍无法连接,检查机器B的监听是否注册了orcl服务:

  • 在机器B执行lsnrctl status,查看Services Summary部分是否存在orcl服务。
  • 若未注册,可在数据库中执行以下命令手动注册:
ALTER SYSTEM REGISTER;

或修改数据库初始化参数local_listener指向监听,再重启数据库:

ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.11)(PORT=1521))' SCOPE=BOTH;

关于Oracle远程连接的设置说明

Oracle不需要像SQL Server那样单独开启“远程连接”开关,但必须满足两个条件:

  • 监听服务绑定了外部可访问的IP地址(而非仅localhost)
  • 监听已正确注册了目标数据库服务(SID/SERVICE_NAME)

内容的提问来源于stack exchange,提问作者henrry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:35:36