导读:本期聚焦于小伙伴创作的《ora-12514监听程序当前无法识别连接描述符中请求的服务该怎么解决》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《ora-12514监听程序当前无法识别连接描述符中请求的服务该怎么解决》有用,将其分享出去将是对创作者最好的鼓励。

ora-12514是Oracle数据库连接过程中非常典型的错误,报错信息为监听程序当前无法识别连接描述符中请求的服务,本质是客户端发起连接时,Oracle监听程序无法找到匹配的服务名来响应请求,导致连接建立失败。

ora-12514监听程序当前无法识别连接描述符中请求的服务该怎么解决

错误常见触发原因

要解决问题首先需要明确可能的诱因,常见的有以下几种情况:

  • 数据库实例没有正确注册到监听程序中,静态注册配置缺失或者动态注册未生效
  • 客户端连接时使用的服务名和监听程序中配置的服务名不一致
  • 监听程序本身没有启动,或者监听配置文件存在语法错误
  • 数据库实例处于关闭或者受限状态,无法对外提供服务

逐步排查与解决步骤

第一步:检查监听程序运行状态

先登录到Oracle数据库所在的服务器,使用命令行工具查看监听的运行情况,执行以下命令:

# 查看监听状态
lsnrctl status

如果输出中显示监听程序没有启动,执行启动命令:

# 启动监听
lsnrctl start

如果监听已经启动,查看输出中的Services Summary部分,确认是否有你要连接的服务名存在。

第二步:核对监听配置文件listener.ora

监听的核心配置文件是listener.ora,通常位于$ORACLE_HOME/network/admin目录下,静态注册的服务需要在这里配置。正确的静态配置示例如下:

# listener.ora 配置示例
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orclpdb) # 这里是要对外提供的服务名
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

注意GLOBAL_DBNAME的值就是客户端连接时需要使用到的服务名,修改完配置后需要重启监听生效:

lsnrctl reload

第三步:检查客户端连接配置tnsnames.ora

客户端如果使用本地命名方式连接,需要核对tnsnames.ora文件中的配置,确保服务名和监听中的一致,示例配置如下:

# tnsnames.ora 配置示例
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclpdb) # 这里必须和listener.ora中的GLOBAL_DBNAME一致
    )
  )

第四步:验证数据库实例状态

登录数据库执行以下SQL查看实例和服务状态:

-- 查看实例状态
SELECT instance_name, status FROM v$instance;

-- 查看注册到监听的服务
SELECT name, pdb FROM v$services;

如果实例状态不是OPEN,需要先打开数据库;如果是可插拔数据库(PDB),需要确认PDB已经打开:

-- 打开PDB
ALTER PLUGGABLE DATABASE orclpdb OPEN;

验证连接是否恢复

完成以上配置后,使用客户端工具尝试连接,也可以直接用命令行验证:

# 使用sqlplus测试连接
sqlplus username/password@//192.168.0.1:1521/orclpdb

如果可以正常登录,说明ora-12514错误已经解决。如果仍然报错,可以查看监听的日志文件,通常位于$ORACLE_HOME/network/log/listener.log,日志中会记录更详细的连接失败原因,方便进一步排查。

ora-12514Oracle监听listener.oratnsnames.ora数据库连接修改时间:2026-07-22 15:54:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。