【解决】ORA-12514:无监听程序

我在虚拟机上安装一个Oracle 数据库 ,pql 是可以链接,就是Navicate 反复链接不上去

提示 提供的服务无法监听!

【方案:】

找到Oracle安装目录下   E:\oracle11g\product\11.2.0\dbhome_1\NETWORK\ADMIN  下的  listener.ora  文件中加入下面标红的部分-保存-重启服务-重启电脑即可

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oracle11g\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      #(ENVS = "EXTPROC_DLLS=ONLY:D:\oracle11g\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )

(SID_DESC =
    (GLOBAL_DBNAME = ORCL)
    (ORACLE_HOME = D:\oracle11g\product\11.2.0\dbhome_1)
    (SID_NAME = ORCL)
    )

  )
注意  ORACLE_HOME = D:\oracle11g\product\11.2.0\dbhome_1    改为自己的目录位置

重启监听服务。

参考 ORA-12514: TNS: listener does not currently know of service requested in connect descriptor_tns:listener does not currently know of service re-优快云博客

### ORA-12514 Navicat 连接 Oracle 数据库 错误解决方案 ORA-12514 是一种常见的 Oracle 数据库连接错误,表示客户端尝试连接的服务名未在监听器中注册。以下是针对此问题的具体分析和解决方法: --- #### 1. 理解 ORA-12514 错误的原因 ORA-12514 错误通常发生在客户端试图通过 TNS 配置文件或直接输入服务名的方式连接到数据库时,但监听器未能找到与请求相匹配的服务名。这可能是由于以下原因之一引起的: - 客户端使用的 `SERVICE_NAME` 或 `SID` 不正确。 - 监听器配置文件 (`listener.ora`) 中缺少必要的服务注册信息。 - 数据库实例尚未启动或未向监听器注册其服务[^4]。 --- #### 2. 检查并修正服务名和服务 ID (SID) 确保 Navicat 中的 `SERVICE_NAME` 设置正确。如果不确定应该使用哪个服务名,可以在数据库服务器上执行以下 SQL 查询以获取当前可用的服务名列表: ```sql SELECT value FROM v$parameter WHERE name = 'service_names'; ``` 此外,也可以检查 `v$instance` 表中的实例名称作为备用选项: ```sql SELECT instance_name, host_name FROM v$instance; ``` 将查询得到的结果应用于 Navicat 的连接配置中[^5]。 --- #### 3. 修改监听器配置文件 (`listener.ora`) 导航至 Oracle 安装目录下的 `\network\admin\` 文件夹,编辑 `listener.ora` 文件。确保其中包含类似于以下的内容: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = your_service_name) (ORACLE_HOME = path_to_your_oracle_home) (SID_NAME = your_sid) ) ) ``` 替换占位符为实际值后重启监听器以应用更改: ```bash lsnrctl stop lsnrctl start ``` --- #### 4. 验证监听状态 使用以下命令验证监听器的状态以及已注册的服务: ```bash lsnrctl status ``` 输出应显示类似以下的信息: ```plaintext Services Summary... Service "your_service_name" has 1 instance(s). Instance "your_instance", status READY, has 1 handler(s) for this service... The command completed successfully ``` 如果没有看到预期的服务名,则需要重新检查前面提到的配置步骤[^4]。 --- #### 5. 更新 Navicat 的 Instant Client 版本 尽管这不是 ORA-12514 的主要成因,但如果存在其他兼容性问题(如引用[1]所提及的情况),仍建议更新 Navicat 所依赖的 OCI 库版本。具体做法是从官方站点下载最新版的 Oracle Instant Client 并将其路径添加到系统的环境变量 PATH 中[^5]。 --- #### 6. 替代方案:切换到默认服务名 某些情况下,默认的服务名为 `ORCL` 可能会被硬编码于部分工具内部逻辑之中。因此可以尝试暂时忽略自定义命名规则而改为直接指定标准值进行测试连接操作[^4]。 --- ### 总结 通过对上述几个方面的逐一排查与调整,绝大多数由 ORA-12514 导致的问题都能够得到有效缓解甚至彻底消除。重要的是始终保持耐心细致的态度对待每一个细节环节直至最终达成稳定可靠的网络通讯效果为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity青子

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值