Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务

最简单的有可能是你的服务还没有开启,需要启动服务!!!!

在连接数据库的时候,有时会遇到一个“ORA12514:监听程序当前无法识别连接描述符中请求的服务”的错误,这个错误其实就是数据库动态注册(关于动态注册会在稍后讲解)不生效,导致监听器无法识别客户端连接符中提供的服务名,从而拒绝建立数据库连接时报的错误信息,所以就需要对监听器配置做修改。

在这里,还需对问题进行细化,有时候可能会发现,在刚开启监听器的时候会发生这个错误,但过了一会再进行连接就不会报错,这其实是因为动态注册需要时间,而刚开启监听器时,数据库还未注册到监听器,导致报错,这种情况不在本文讨论范围内。

listener.ora文件存放在$ORACLE_HOME/network/admin(以我的Oracle11为例就是D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN),这个文件存放的就是监听器的配置,监听器在启动时会读取该文件,我们先来了解一下这个文件。

该文件的大概配置如下图

上图中,SID_LIST_LISTENER参数就是数据库注册,动态注册或是静态注册(注册就是将数据库作为一个服务注册到监听器。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库,动态注册就是在监听器配置文件中不明确的声明数据库实例和服务名,而是在数据库启动时才由数据库自动注册到监听器,静态注册就是在监听器配置文件中明确声明数据库实例和服务名。),LISTENER参数就是监听器的配置,其中,PROTOCOL参数是协议名,一般为TCP,HOST参数是地址,可以写IP地址、服务器名、localhost、127.0.0.1,PORT参数是端口号,默认为1521。

既然是因为动态注册引起的问题,那么最简单的解决方法自然是由动态注册改为静态注册,如下图

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

 

红线框内的就是静态注册,SID_NAME参数是数据库实例名,GLOBAL_DBNAME参数是全局数据库名(在配置客户端的本地服务名时“服务名”要与全局数据库名一致),配置好后,重启监听器,就可正常连接了。

修改为静态注册看起来虽简单,但也有不足之处,首先,要修改为静态注册需对配置文件和参数较为熟悉,否则很有可能会配置错误,其次当参数的值有所改变时必须重新修改配置才行。

还有一种方法就是修改host参数的值,host参数可以有四种值:IP地址、服务器名、localhost、127.0.0.1,由于可取值变多了,导致了解决办法也随着导致出现问题的原因而多样化了起来,各种情况都可能有不同的解决办法,可以在这四个值之间尝试修改,需要注意的是,当采用localhost和127.0.0.1时,客户端的本地服务名不能使用IP地址和服务器名进行配置,否则会报“ORA12541:无监听程序”的错误,还有就是修改之后要重启监听器。

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ORA-12514是Oracle数据库的一个错误编码,表示监听程序无法识别连接描述符服务名。 在Oracle数据库连接描述符是用于建立数据库连接的重要参数。它包含了连接数据库所需的信息,例如主机名、端口号和服务名等。当客户端尝试连接数据库时,监听程序会根据连接描述符的信息来确定要连接数据库实例。 然而,如果监听程序无法识别连接描述符服务名,就会出现ORA-12514的错误。 造成ORA-12514错误的可能原因有以下几点: 1. 服务名错误:连接描述符服务名可能与实际的数据库服务名不匹配。在这种情况下,应该检查连接描述符服务名是否正确。 2. 监听程序未启动:如果监听程序未启动,它就无法识别连接描述符服务名。可以使用lsnrctl命令来检查监听程序的状态,并使用start命令启动监听程序。 3. 监听程序配置错误:监听程序的配置可能有误,导致无法识别连接描述符服务名。可以检查监听程序的配置文件listener.ora,并确保其服务名与连接描述符服务名匹配。 解决ORA-12514错误的方法如下: 1. 检查连接描述符服务名是否正确,并确保与实际的数据库服务名一致。 2. 检查监听程序是否已启动,如果未启动,则使用lsnrctl命令启动监听程序。 3. 检查监听程序的配置文件listener.ora,并确保其服务名与连接描述符服务名匹配。 4. 如果以上方法均无效,可以尝试重新配置监听程序,并确保服务名的正确性。 总之,ORA-12514错误是由于监听程序无法识别连接描述符服务名所导致的。通过检查服务名的正确性、监听程序的启动状态以及配置文件的配置情况,我们可以解决这个错误。 ### 回答2: ORA-12514是Oracle数据库的一个错误代码,表示监听程序无法识别连接描述符服务名称或实例名。监听程序是一个在数据库服务器上运行的程序,它负责接收客户端的连接请求,并将其转发给相应的数据库实例。 当发起一个连接请求时,客户端会提供一个连接描述符,包含了要连接数据库实例的服务名称或实例名。如果监听程序无法识别这个连接描述符服务名称或实例名,就会返回ORA-12514错误。 造成ORA-12514错误的原因可能有以下几个方面: 1. 服务名称或实例名拼写错误:检查连接描述符服务名称或实例名是否正确输入。 2. 监听程序未正常运行:确认监听程序是否已经启动,并且正常监听数据库实例的连接请求。 3. 监听程序配置错误:检查监听程序的配置文件是否正确,特别是监听程序监听服务名称或实例名是否与连接描述符的一致。 解决ORA-12514错误的方法如下: 1. 检查连接描述符服务名称或实例名,并确认其正确性。 2. 确认监听程序是否运行正常,可以通过在数据库服务器上执行命令"lsnrctl status"来检查监听程序的状态。 3. 如果监听程序未正常运行,可以尝试重启监听程序,命令为"lsnrctl restart"。 4. 如果监听程序配置文件有错误,可以修改配置文件并重启监听程序,修改配置文件后需执行"lsnrctl reload"命令重新加载配置文件。 总结来说,ORA-12514错误是由于监听程序无法识别连接描述符服务名称或实例名造成的。通过检查连接描述符监听程序的运行状态和配置文件,可以解决这个错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ok060

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值