`
哇哈哈852
  • 浏览: 91508 次
文章分类
社区版块
存档分类
最新评论

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

阅读更多


在Oracle data guard环境中,主库的alert.log文件出现"ORA-12514: TNS:listener does not currently know of service requested in connect descriptor"错误信息,导致主库上的日志无法传输到备库上,data guard数据同步不能实现。
http://cuug.com.cn/html/activity_283_283.html?wnlt
这是一个最最基础的错误,在我们最初从客户端连接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,不是默认选项。因此,该服务名并没有被自动注册进入到监听器。
  • 大小: 31.8 KB
分享到:
评论

相关推荐

    ora-12514的错误的原因

    ORA-12514 错误的一个常见原因是监听器没有启动。在服务器端,监听器是数据库连接的入口点。如果监听器没有启动,客户端将无法连接到数据库。解决方法是启动监听器,可以使用命令 `lsnrctl start` 或 `C:lsnrctl ...

    ORA-12514错误解决办法

    ### ORA-12514错误解决办法 #### 错误概述 ORA-12514是Oracle数据库中常见的一个错误,全称为“TNS:listener does not...通过上述详细的分析和解决策略,我们可以有效地处理ORA-12514错误,并减少其对业务操作的影响。

    ORA-12514TNS监听程序当前无法识别连接描述符中请求服务的解决方法[借鉴].pdf

    但是,在使用 Oracle 时,用户经常会遇到各种错误,例如 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务的错误。这种错误会导致用户无法连接到 Oracle 数据库,影响正常的工作和生产。 在本文中,我们将...

    plsql不能连接linux下oracle问题ORA-12514.doc

    然而,在Linux环境下,PL/SQL可能无法连接到Oracle数据库,出现ORA-12514错误。本文档旨在解决这个问题,提供了详细的解决方案。 一、问题分析 在Linux环境下,PL/SQL无法连接到Oracle数据库,出现ORA-12514错误。...

    Oradim工具解决ora-12514其中一种情况

    ora-12514错误通常表示"监听程序无法解析服务名",这是由于网络配置问题或者监听程序没有正确注册服务导致的。然而,这里我们关注的是利用Oradim工具解决ora-12514的一种特定情况。 首先,让我们了解Oradim工具的...

    ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 解决方法.txt

    ### ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 解决方法 #### 错误概述 ORA-12514 是一个常见的 Oracle ...通过上述步骤,您可以解决 ORA-12514 错误并恢复客户端与 Oracle 数据库之间的正常连接。

    orcale 12514错误

    ORA-12514错误通常是由于监听器和服务配置不匹配引起的。通过检查并调整监听器和网络配置文件,以及验证环境变量和服务状态,可以有效地解决这一问题。确保所有配置的一致性和正确性是关键所在。

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    ora-227101错误解决办法

    在Oracle数据库管理与维护的过程中,遇到各种错误代码是家常便饭,其中“ORA-227101”错误虽然在题目中被误标,实际案例中展示的是“ORA-27101”错误,这是一个较为常见的问题,通常发生在数据库服务未能正确启动或...

    Oracle_ORA-12518故障_处理

    ORA-12518/TNS-12518错误通常是由于监听器在将客户端连接移交给服务器进程或调度进程时出现问题所导致的。通过对监听器日志的分析、配置文件的检查、系统资源的调整等步骤,可以有效地解决这一问题。同时,针对不同...

    Oracle12cRAC数据库 出现ora-12520, ora-12516

    这两种错误代码分别表示“无法为服务找到可用实例”和“TNS:没有监听器”,通常与连接管理、进程和会话限制以及监听器配置有关。 #### 二、问题原因分析 ##### 1. 连接数达到上限 在Oracle12cRAC环境中,每个...

    ORACLE出现ORA-15414错误

    ORA-15414是Oracle数据库中的一种错误代码,通常表示“无效的监听器描述符列表”。这意味着在尝试连接到数据库时,监听器无法识别或处理连接请求中的某些部分。这种错误可能由多种因素引起,包括但不限于配置文件...

    ORA-12560 TNS 协议适配器错误

    - **查看监听器日志**:监听器的日志文件通常位于安装目录下的`diag/tnslsnr/hostname/log`目录下,可以通过查看这些日志来了解更详细的错误信息。 - **检查tnsnames.ora文件**:这是客户端用来解析服务器地址的配置...

    解决ORA-01033 ORACLE 正在初始化或关闭

    解决ORA-01033错误的关键在于仔细检查数据库的配置、监听器设置、环境变量以及资源分配情况。通过上述步骤,大多数情况下可以有效解决数据库初始化或关闭时遇到的问题。然而,在某些复杂场景下,可能需要更深入地...

    ORA-12154 TNS 无法解析指定的连接标识符

    - **客户端验证**:使用 `tnsping <tns_name>` 命令检查监听器是否可用。 - **服务器端操作**: - 查看监听状态:`lsnrctl status` - 启动监听服务:`lsnrctl start` ##### 2. 检查 tnsnames.ora 文件格式 - 使用...

    Oracle报ORA-12737问题解决方法

    然而,在日常使用过程中,我们可能会遇到各种错误代码,其中“ORA-12737”是一个常见的错误,它通常与网络连接或者数据库实例的启动有关。本文将深入探讨ORA-12737错误的原因、解决方案以及如何利用Oracle最新版本的...

Global site tag (gtag.js) - Google Analytics