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

最近几天刚学习oracle11g,安装完成之后直接使用,今天用PLSQL链接突然报错,报错代码为:ORA-12514:监听程序当前无法识别连接描述符中请求的服务。网上查了这种异常的解决办法,特在此记录。

出现该问题一般有两种情况。

第一种是在你安装完之后未配置监听(在此我暂时忘记安装完之后有没有配置监听);

第二种是之前配置了监听但是系统未写入到listener.ora文件中(在此我暂未搞明白什么时候写入),所以只需要在该文件中写入配置参数就可以了。


解决办法:

1、打开listener.ora文件

     找到listener.ora文件的存放位置并打开。我本机文件目录在D:\app\iLife1988\product\11.2.0\dbhome_1\NETWORK/ADMIN下。该文件须根据自己安装目录的实际情况找。(注:Oracle10g与11g的目录好像不太一样)。文件内容如下图:


从上图中我们可以看出我已经配置过监听了,但是报错是由于Oracle的地址没有写到SID_DESC中,在此我们将此写入就可以了。


2、修改listener.ora文件

     将以下内容追加到该文件的SID_LIST节点下

              (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = D:\app\iLife1988\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
        )

    注:标红的部分根据自己机器安装目录修改


3、我在此本机修改完毕后,总是提示我不能保存,提示说该文件已在别的地方打开。于是我另存一份,然后直接将原来的文件给覆盖掉。 修改完成之后如下图所示:

4、重启监听服务。OK搞定!!


在连接数据库的时候,有时会遇到一个“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_NAME参数是数据库实例名,GLOBAL_DBNAME参数是全局数据库名(在配置客户端的本地服务名时“服务名”要与全局数据库名一致),配置好后,重启监听器,就可正常连接了。

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

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

以上的解决办法为两篇博客的内容,此处转载过来方便查看,在此对原博主表示感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值