Oracle中静态监听导致的ORA-12523错误

今天配置完共享服务器模式之后发现登录过程中报错ORA-12523,排查错误之后发现是静态监听惹的祸。

本机之上有两个监听,一个静态监听1521端口,一个动态监听1526端口。

LISTENER=

(DESCRIPTION=

 (ADDRESS_LIST=

   (ADDRESS=(PROTOCOL=tcp)(HOST=jp)(PORT=1521))

   (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

LSNR2=

(DESCRIPTION=

 (ADDRESS_LIST=

   (ADDRESS=(PROTOCOL=tcp)(HOST=jp)(PORT=1526))

   (ADDRESS=(PROTOCOL=ipc)(KEY=extproc1))))

trace_level_LSNR2=SUPPORT

SID_LIST_LISTENER=

(SID_LIST=

 (SID_DESC=

   (GLOBAL_DBNAME=PROD)

   (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

   (SID_NAME=PROD))

 (SID_DESC=

   (SID_NAME=plsextproc)

   (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

   (PROGRAM=extproc)))

出错时的tnsnames配置:

prod_s=

(description =

  (address = (protocol = tcp)(host = jp)(port = 1521))

  (connect_data =

(server = shared)

(service_name = PROD)

)

)

连接数据库时报错:

[oracle@jp admin]$ sqlplus sys/oracle@prod_s as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 8 10:43:54 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ERROR:

ORA-12523: TNS:listener could not find instance appropriate for the client

connection

检查之后发现prod_s连接串走的是静态监听,共享服务器模式需要将调度进程的信息注册到监听之中,当有连接连入时,监听会选择一个负载最低的调度进程。而静态监听没有调度进程的信息,导致通过shared_server模式连接报错。

修改tnsnames

prod_s=

(description =

  (address = (protocol = tcp)(host = jp)(port = 1526))

  (connect_data =

(server = shared)

(service_name = PROD)

)

)

重新通过shared_server连接,成功:

[oracle@jp admin]$ sqlplus sys/oracle@prod_s as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 8 10:42:22 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SYS@prod_s>select server from v$session;

SERVER

---------

SHARED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

SERVER

---------

DEDICATED

DEDICATED

DEDICATED

DEDICATED

DEDICATED

16 rows selected.

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-08-02 16:25:06

Oracle中静态监听导致的ORA-12523错误的相关文章

Oracle中“无监听程序”和“协议适配器错误”的解决方法

一.发现问题 有些杀毒程序会清掉一些oracle注册表信息或删除oracle的bin目录下的一些.exe文件,导致数据库无法启动,下面来分析一下最常见的问题. 二.无监听程序 1.什么是监听器(LISTENER) 监听器是建立在服务端的,用于监听客户端向数据库服务器端提出的连接请求. 配置文件在\db_1\NETWORK\ADMIN\listener.ora. 2.本地服务名(Tnsname) 本地服务名是建立在客户端的,需要连哪些服务器数据库,就将该数据库服务端的信息配置. 配置文件在\db_

oracle静态监听和动态监听

oracle静态监听和动态监听  一.什么是注册? 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名 就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册 到监听器中:数据库服务器对应的实例和服务.) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库

【oracle】动态监听与静态监听

本机客户端以sysdba身份登陆oracle数据库后 用shutdown immediate成功的关闭了数据库. 可是startup的时候,却提示 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 查看listener.ora配置文件后,发现配置的动态监听. 动态监听会时时反应数据库的状态 依赖pmon进程的动态注册,而不像静态监听需要加载listener.ora文件的sid_list_listener部分.之所以无法再启动数据库,是由于数据库关闭后,监听器已经注销了此

Oracle 静态监听注册详解

Oracle 静态监听注册详解        网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [oracle@prudent oracle]$ cd $ORACLE_HOME/network/admin [oracle@prudent admin]$ vi

浅析如何在tnsnames.ora中配置监听

以下是对如何在tnsnames.ora中配置监听进行了详细的分析介绍,需要的朋友可以过来参考下   tnsnames.ora所在位置:D:Installedoracleproduct11.1.0db_1NETWORKADMINtnsnames.ora也就是说在product中 只有配置了监听之后才可以登录到数据库中 复制代码 代码如下: TOTO =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 这里是IP地址)(PORT = 1

配置静态监听解决ORA-12514错误的案例(转)

今天做Linux下DG配置的时候,遇到一个现象,tnsname.ora文件配置都正常,tnsping也正常,监听也正常,但是仍然报ORA-12514错误:   SQL> set lin 130 pages 130  SQL> select dest_id,error from v$archive_dest;      DEST_ID ERROR ---------- ----------------------------------------------------------------

【DATAGUARD】DATAGUARD 与 静态监听

在Oracle DATAGUARD实验中必须要用到静态监听,否则很严重(例子前面创建dg的过程中有遇到) 静态监听指实例启动时读取listener.ora配置文件,将实例和服务注册到监听程序.无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务 SID_LIST_LISTENER = (SID_LIST =   (SID_DESC =     (GLOBAL_DBNAME = Oranet)     (SID_NAME = yangdb)   ) ) LISTENER =   (D

Linux hostname对Oracle实例以及监听的影响

    在Linux平台中,对hostname的修改,是否对ORACLE数据库实例或监听进程有影响呢?如果有影响,又要如何解决问题呢?另外/etc/hosts下相关内容的修改,是否也会影响实例或监听呢?这里涉及的场景非常多,当然关系也非常复杂,我们下面通过几个例子来测试验证一下.     如下所示,服务器/etc/hosts 与/etc/sysconfig/network的原始配置信息如下 [root@test ~]# more /etc/hosts # Do not remove the fo

[20160513]Restrict Session与静态监听.txt

[20160513]Restrict Session与静态监听.txt --给同事讲解动静态监听时,一次测试,当执行后alter system enable restricted session;发现远程用户依旧可以登录,检查发现是静态 --监听注册搞的鬼,做一个记录.并且把各种情况做一个总结: 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------------------