今天使用PL/SQL Developer连接到一台新的测试服务器时,遇到ORA错误:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程。对应的监听日志文件里面错误为TNS-12523: TNS:listener could not find instance appropriate for the client connection

首先使用oerr命令查看ORA-12523错误提示的详细内容

[oracle@DB-Server admin]$ oerr ora 12523

12523, 00000, "TNS:listener could not find instance appropriate for the client connection"

// *Cause:  The listener could not find any available (database) instances, 

// that are appropriate for the client connection.

// *Action: Run "lsnrctl services" to ensure that the instance(s) are

// registered with the listener, and have status READY.

按照提示信息,我首先运行"lsnrctl services" 查看数据库实例是否注册了监听服务,并且监听服务是否处于就绪状态。

[oracle@DB-Server admin]$ lsnrctl services

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 06-JAN-2015 14:24:23

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.22)(PORT=1521)))

Services Summary...

Service "EPPS" has 1 instance(s).

  Instance "EPPS", status UNKNOWN, has 1 handler(s) for this service...

    Handler(s):

      "DEDICATED" established:0 refused:0

         LOCAL SERVER

The command completed successfully

然后检查了一下本地的tnsnames.ora的配置情况,发现其使用共享服务器模式(SHARED)连接到数据库

TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = epps)
    )

检查查看测试服务器,确认其配置是否开启了共享服务器(Shared Server)模式,如下所示,数据库为开启共享服务器模式

SQL> show parameter shared_server

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

max_shared_servers                   integer     40

shared_server_sessions               integer

shared_servers                       integer     1

SQL> 

 

SQL> show parameter dispatchers

 

NAME                                 TYPE                             VALUE

------------------------------------ -------------------------------- ------------------------------

dispatchers                          string                           (protocol=TCP)

max_dispatchers                      integer

SQL> 

但是为什么数据库启用了共享服务器模式,客户端无法以SHARED模式登陆数据库? 那么我先修改客户端的连接方式为专用(DEDICATED)模式

TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = epps)
    )
  )

此时以使用PL/SQL Developer登录数据库,发现OK,不会出现ORA-12523错误哦。查看当前会话,你可以通过下面SQL发现使用专用方式连接数据库。

SQL> select server from v$session where sid = (select sid from v$mystat where rownum < 2);

 

SERVER

---------

DEDICATED

当然,你可以用下面SQL语句查看,其中GET253194为本人计算机名称

COL USERNAME FOR A20

COL OSUSER FOR A10

COL MACHINE FOR A20

COL TERMINAL FOR A20;

SELECT SID, USERNAME, OSUSER, MACHINE,TERMINAL, SERVER 

FROM V$SESSION

WHERE TERMINAL='GET253194'; 

修改tnsnames.ora,将(SERVER = DEDICATED)删除(如下所示),依然可以连接到数据库,查看其连接方式,发现它会自己选择专用连接方式。也就是说默认为专用模式连接,除非指定为共享服务器模式

TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = epps)
    )
  )

SQL> select server from v$session where sid = (select sid from v$mystat where rownum < 2);

 

SERVER

---------

DEDICATED

那么问题出在哪里呢? 很是纳闷,明明服务器为共享服务器模式,应该可以以共享服务连接方式连接数据库的。最后在折腾中发现,这台服务器本来是生产服务器,后来退下来被我当做测试服务器,于是我将IP地址改为了192.168.16.22, 但是当时只是修改了/etc/sysconfig/network-scripts/ifcfg-eth0系统文件. 忘记修改/etc/hosts对应的IP地址。我将/etc/hosts中的IP地址修改过来后,发现ORA-12523错误不见了,问题完满解决。但是本质的原因呢?看来还需要深入了解监听服务原理。多去学习、了解一些相关资料。留待后面补充。

ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程的更多相关文章

  1. oracle没有监听和监听程序无法找到适用于客户机连接的例程

    1.无监听,可以尝试下以下几种办法: 1)在net manager中重新配置监听.我的net manager监听点开不了,把ADMIN下的listener.ora删掉再去打开试试. 2)cmd中输入n ...

  2. ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄解决方法

    1.查看当前连接进程数SQL>select count(*) from v$process;2.查看连接数上限SQL>select value from v$parameter where ...

  3. ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序

    当你碰到ORA-12520错误时,如下所示: 英文:ORA-12520: TNS:listener could not find available handler for requested typ ...

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

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  5. 关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误

    关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数 ...

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

    今天用PL/SQL连接虚拟机中的Oracle数据库,发现报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,也许你也遇到过,原因如下: oracle安装成功后,一直未停止 ...

  7. ORA-12514(TNS:监听程序当前无法识别...)

    记录: ORA-12514(TNS:监听程序当前无法识别...)的解决方案 在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误:   按照安装提示执行后面的操作后,打开PL/SQ ...

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

    用PL/SQL连接虚拟机中的Oracle数据库,发现又报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,帮其解决后,发现很多人遇到过这样的问题,因此写着这里. 也许你没 ...

  9. 解决windows7无法连接CentOS7系统中oracle问题:ORA-12514 TNS 监听程序当前无法识别

    linux开启后终端按下面输入(容易忘记,记录下): [oracle@localhost ~]$ lsnrctl stop                #先关闭监听服务 [oracle@localh ...

随机推荐

  1. [c++] Class

    也是醉了,一个.h文件就有这么多细节问题: 初始化列表,使用{} 也可以. 类中的引用和const变量,必须立即在初始化列表中提前初始化. 常成员函数,const 放在函数后, 常成员函数即不能改变成 ...

  2. Introduction to the Service Provider Interfaces--官方文档

    地址:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html What Are Services? Services are unit ...

  3. SharePoint Server 2013 让上传文件更精彩

    新版的SharePoint 2013 提供了多种上传与新建文件的方式,对于与系统集成紧密的IE来上传文档更加方便 使用IE开启SharePoint地址 Figure 1打开文档库,在"新颖快 ...

  4. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  5. LeetCode - 415. Add Strings

    Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...

  6. block,inline和inline-block概念和区别

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  7. Using Nuget in Visual Studio 2005 & 2008

    NuGet is a Visual Studio extension that makes it easy to install and update third-party libraries an ...

  8. Redis命令拾遗四——集合类型(命令补充)

    补充下上篇文章集合的命令. 上篇地址 博客园蜗牛 http://www.cnblogs.com/tdws/p/5785939.html SCARD Key获得执行集合中元素的数量. SDIFFSTOR ...

  9. 面积(area)

    题目描述 编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中点的数目.如图所示,在10*10的二维数组中,“*”围住了15个点,因此面积为15. 0 ...

  10. 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox

    [源码下载] 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) T ...