今天我的一位研发同事急匆匆的过来找我,说使用PL/SQL DERVELOPER连接某个核心数据库时,返回ORA-12537的错误,无法连接数据库了!
      这还得了,这是一个线上数据库,有业务在运行。赶快查看:
      ORA-12537的ORACLE官方错误解释:
     
Cause: "End of file" condition has been reached; partner has disconnected.

Action: None needed; this is an information message.

      达到什么条件了呢?
      检查监听,在另外主机使用tnsping也正常。正在想着问题,我这边的PL/SQL DEVELOPER突然又能连接了。但是研发的同事那边却说报错依然,无法连接。
       我突然感觉这可能和连接数有关系,立刻查看有关接入到这个数据库主机1521端口的连接数,320个,数据库的SESSIONS值是335(当然这里如果是超过了sessions的最大数目应该是报:ORA-00018: maximum number of sessions exceeded,除了后台进程应该也快要到达最大SESSION的数了)!如果再加入其他的连接,整个主机的网络连接数就非常多了。
      直接检查连接最多主机和程序,发现有个主机上的TOMCAT有74个数据库连接(应该是有问题的)。直接杀掉这个TOMCAT,所有报ORA-12537错误的程序都可以正常接入。
      连接数多,却没有报ORA-00018,但是一旦停止多个连接就可以正常连接数据库,看来这个ORA-12537错误和操作系统对网络的并发连接控制有着一定的关系。
      很多时候,我们对于ORA-12537的错误解决:
      在sqlnet.ora文件中将tcp.validnode_checking的值设为no,然后重启服务。
      而此次是通过减少并发网络连接来解决的。
      欢迎讨论指正。 -:)
      -----------------------------------------
      环境:
      HP-UX B.11.23 U ia64
      ORACLE 10.2.0.1