日期:2014-05-16  浏览次数:20387 次

jdbc连接oracle scan IP报错Cannot create PoolableConnectionFactory

现象:

Cannot create PoolableConnectionFactory (Io 异常:Connectionrefused(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.4.124.245)(PORT=1521))(CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))null))'))(ERROR=(CODE=303)(EMFI=1)))))

使用的连接串为,其中10.×.×.30为oracle rac 的scan IP,改连接方式通过plsql连接没有问题,但使用jdbc却不能正常连接

SRV_SMP =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST= 10.×.×.30)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = srv_smp3)

    )

  ) 

解决方法:

 连接串修改为普通的rac vip连接方式后,问题解决

TYDB_SRV_SMP2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.45)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.44)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.43)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = srv_smp3)
    )
  )

原因分析:

虽然问题解决了,查找了metalink的上的资料,发现有一篇文章和这个很类似,版本完全吻合,是jdbc classpath设置问题,由于问题已经接近,方案中的方法没有验证。

 
 
Jdbc Connection Issues Having The TNS-1153 Error In The Listener Log [ID 1364680.1]    
 
In this Document
  Symptoms
  Cause
  Solution
________________________________________
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.
Applies to:
JDBC - Version: 11.2.0.2 and later   [Release: 11.2 and later ]
Information in this document applies to any platform.
Symptoms

On : 11.2.0.2 version, JDBC for Java

When attempting to connect from a java program using the JBC Driver 11.2.0.2,
the following error occurs.

ERROR
-----------------------
In the application side:
Exception java.sql.SQLException: Io exception: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.201.60.115)(PORT=1521))(CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))null))'))(ERROR=(CODE=303)(EMFI=1))))
Exception java.sql.SQLException: Io exception: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.201.60.115)(PORT=1521))(C