我使用的是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无法创建连接。
我的问题:
答案 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。