今天使用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. ES6学习--搭建环境

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发 ...

  2. php对表格进行批量操作如全选反选删除功能

    <!DOCTYPE> <html> <head> <meta http-equiv="content-type" content=&quo ...

  3. php通过判断来源主机头进行防盗链

    check.php <html> <body> <form action="test.php" method="post"> ...

  4. C++面向对象

    此博文仅作为C++考研专业课的复习内容. 面向对象 构造函数 在对象被创建的时候将自动调用. 复制构造函数 形参是本类对象的引用.其作用是使用一个已经存在的对象,去初始化一个同类的新对象. 复制构造函 ...

  5. 相克军_Oracle体系_随堂笔记009-检查点队列

    1.检查点队列 checkpoint queue RBA 日志块地址 redo block address LRBA 第一次被脏的地址 HRBA 最近一次被脏的地址 on disk rba 重做日志( ...

  6. HuffmanTree的浅析和在C#中的算法实现

    无论是在我们的开发项目中,还是在我们的日常生活中,都会较多的涉及到文件压缩.谈到文件压缩,可能会有人想问文件压缩到底是怎么实现的,实现的原理是什么,对于开发人员来说,怎么实现这样一个压缩的功能. 接下 ...

  7. 与类相关基本概念----Beginning Visual C#

    span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...

  8. 用API网关把API管起来

    最开始只是想找个API网关防止API被恶意请求,找了一圈发现基于Nginx的OpenResty(Lua语言)扩展模块Orange挺好(也找了Kong,但是感觉复杂了点没用),还偷懒用Vagrant结合 ...

  9. 7.2 数据注解属性--TimeStamp特性【Code-First 系列】

    TimeStamp特性可以应用到领域类中,只有一个字节数组的属性上面,这个特性,给列设定的是tiemStamp类型.在并发的检查中,Code-First会自动使用这个TimeStamp类型的字段. 下 ...

  10. CSS3橙色的星球绕轨道公转动画

    效果:http://hovertree.com/texiao/css3/24/ 效果图: 代码如下: <!DOCTYPE html> <html lang="zh" ...