Weblogic JDBC数据源仅提供1个活动连接,即“池中当前没有可用资源”

时间:2010-04-20 15:16:28

标签: weblogic datasource connection-pooling

我使用的是weblogic JDBC数据源,我的数据库是Oracle 10g,下面是配置。

过去工作正常,但突然开始出问题,请看下面的例外情况。

  

Weblogic JDBC   数据源,值java.sql.SQLException:   无法获取XAConnection   weblogic.common.resourcepool.ResourceLimitException:   目前没有可用的资源   游泳池

<?xml version="1.0" encoding="UTF-8"?> <jdbc-data-source
     

的xmlns = “http://www.bea.com/ns/weblogic/90”   的xmlns:秒= “http://www.bea.com/ns/weblogic/90/security”   的xmlns:WLS = “http://www.bea.com/ns/weblogic/90/security/wls”   的xmlns:的xsi = “http://www.w3.org/2001/XMLSchema-instance”   的xsi:的schemaLocation =“http://www.bea.com/ns/weblogic/920   http://www.bea.com/ns/weblogic/920.xsd“&GT;   XL-参考-DS
         JDBC:神谕:OCI:@ abc.COM       oracle.jdbc.driver.OracleDriver                           用户           DEV_260908                             密码           密码                              DLL           ocijdbc10                             协议           OCI                              oracle.jdbc.V8Compatible           真正                             baseDriverClass           oracle.jdbc.driver.OracleDriver                   
         1       100       1       真正       SQL SELECT 1 FROM DUAL
  
         DataJndi       OnePhaseCommit      

此异常发生在dev环境中,其中连接的用户只有一个。

我知道这与池最大大小有关,但我也怀疑这可能是由于Oracle,可能是Oracle无法创建连接。

我的问题:

  1. 是否有任何调试/日志记录参数来启用数据源日志记录,以便我可以检查日志中获取,释放和未使用的连接数?
  2. 如何检查特定用户的oracle连接限制?

3 个答案:

答案 0 :(得分:8)

听起来好像正在逐渐泄漏连接,正如您似乎怀疑的那样,并且您最终会达到JDBC最大池大小。我不认为你首先达到Oracle限制,因为你得到一个ORA例外,并且也无法直接连接到数据库。

您可以配置数据源以从WebLogic控制台收集配置文件信息;从域结构菜单中,转到services-&gt; JDBC-&gt;数据源,选择您的连接,然后转到配置下的诊断选项卡。但是你可以从游泳池的基本统计数据中得到一个粗略的想法;转到environment-&gt;服务器,选择服务器,然后查看监视下的JDBC选项卡。这显示了活动连接和高水位线。如果其中任何一个与你的最大poole大小相同,那么这是一个非常好的迹象表明你正在泄漏。

从Oracle方面,您可以查看show parameters sessions允许的会话数,但还需要检查show parameters processes,这可能会进一步限制它(其中一些内容进程需要{} { {1}})。您可以使用pmon之类的内容查看有多少个开放式连接。根据错误,我不希望它非常接近会话/进程限制,但应该与控制台的活动连接数相匹配。

答案 1 :(得分:0)

weblogic服务器无法获取连接。 如果要关闭连接对象并尝试再次使用相同的连接对象,则可能会发生这种情况。

希望它有所帮助!

答案 2 :(得分:0)

启用WebLogic ServerTransactionTimeout。

  1. 点击数据源名称:
  2. screenshot