当前位置:  数据库>oracle

监听器注册与ORA-12514 错误分析

    来源: 互联网  发布时间:2017-05-11

    本文导语: 在Oracle data guard环境中,主库的alert.log文件出现"ORA-12514: TNS:listener does not currently know of service requested in connect descriptor"错误信息,导致主库上的日志无法传输到备库上,data guard数据同步不能实现。 这是一个最最基础的错误,在我...

在Oracle data guard环境中,主库的alert.log文件出现"ORA-12514: TNS:listener does not currently know of service requested in connect descriptor"错误信息,导致主库上的日志无法传输到备库上,data guard数据同步不能实现。

这是一个最最基础的错误,在我们最初从客户端连接Oracle数据库时就可能碰到这个错误。

在主库上使用tnsping 这个oracle net服务别名,如下所示:

  • Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.90)(PORT = 1844))) (CONNECT_DATA = (SERVICE_NAME = webdb)))
  • OK (0 msec)
  • 据此信息可以判断,数据库服务器上的监听器正常,客户端与数据库服务器的网络通讯正常,请求的端口184正常。问题仅仅是监听器不识别在连接符中提供的服务。

    问题分析

    主库上请求连接备库的服务名webdb,在备库上不能被监听器识别。

     在备库上,服务名webdb既没有被监听器动态注册,也没有静态配置在监听器配置文件listener.ora中。

     这里解释一下注册的概念。 

    我个人理解,注册就是将数据库实例作为一个服务写到到监听程序的监控列表中。

     客户端连接数据库时,可以通过这个服务名直接申请到对应的数据库连接,而不再通过数据库实例或者数据库名称。这样客户端也就可以不用知道数据库实例和数据库名称。虽然服务名一般和实例名是一样的,但有这个功能后就可以不一样。

    在数据库实例启动过程中,数据库实例严格地说是PMON进程会向监听器注册相应的服务。这个过程称为动态注册。

     监听器程序在服务注册后,就记录了服务名和实例名之间的对应关系。从而使得客户端使用服务名访问时能从服务名可以转换到实例名。一个服务名下可以包含多个不同的实例名称,如RAC的下服务名;同样,一个实例名下,可以有多个不同服务名。服务名和实例名的对应关系PMON进程从数据库初始化参数service_names和instances中获取。

     在服务名注册到监听器之后,客户端只需要通过服务名就能访问某个实例。在RAC下,这个服务名可以用来实现负载均衡和透明故障切换。

     如果这时客户端还是使用实例名访问数据库,那么就不能实现RAC下的负载均衡和故障透明切换。

     但是,动态注册不一定时时都生效的。如ORA-12514就是动态注册不生效,导致监听器无法识别客户端连接符中提供的服务名,从而拒绝建立数据库连接时报的错误信息。

     动态注册默认仅仅注册到默认的监听器上,这个默认值有三项指标:名称是LISTENER、端口是1521、协议是TCP。如果需要向非默认监听注册,则需要配置local_listener参数。

     使用tnsping得到的信息显示,监听器使用的端口号是1844,不是默认选项。因此,该服务名并没有被自动注册进入到监听器。


        
     
     

    您可能感兴趣的文章:

  • 回收Oracle的监听器日志文件
  • 是不是applet不能实现事件监听器接口啊?
  • swing中的监听器能不能带其它参数啊,除了事件本身?
  • Oracle监听口令及监听器安全详解
  • 监听器问题
  • java中多点传送(同一个事件可同时传送给多个监听器对象corejava1例8.6)采用哪种设计模式谢谢
  • Oracle数据库监听器的问题
  • A10_DatePicker的对话框设置(使用OnDateSetListener监听器)
  • 这个监听器如何注册(j2me 关于短信的到来)(分不够再加)
  • Oracle教程:浅析监听器安装/配置入门
  • Oracle监听器Server端与Client端配置实例
  • Oracle监听器服务不能启动的解决方法
  • 非常头痛的问题:编译java程序时的错误,一个是监听器、一个在调用方法时
  • Oracle 11g2的监听器配置教程
  • 关于监听器
  • 为什么这个监听器一注册,程序就退出 (j2me 关于短信接收的问题),分不够再加,在线等待
  • TestNG 监听器扩展插件 NetEase Arrow
  • android Animation监听器AnimationListener的使用方法)
  • [图文]如何保护好Oracle服务器上的监听器
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,