【发布时间】:2011-09-25 23:24:31
【问题描述】:
我看到运行1小时后,Oracle连接池抛出异常
“发生 SQLException:在连接缓存中发现无效或过时的连接”
这是属性文件:
<bean id="datasource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="URL" value="${local.url}" />
<property name="user" value="${local.username}" />
<property name="password" value="${local.password}" />
<property name="connectionProperties">
<props>
<prop key="includeSynonyms">true</prop>
</props>
</property>
<property name="connectionCachingEnabled" value="true"/>
<property name="connectionCacheProperties">
<props>
<prop key="PropertyCheckInterval">60</prop> <!-- 1 min -->
<prop key="ValidateConnection">true</prop>
<prop key="MinLimit">2</prop>
<prop key="MaxLimit">25</prop>
<prop key="InitialLimit">2</prop>
<prop key="ConnectionWaitTimeout">60</prop> <!-- 1 min -->
<prop key="InactivityTimeout">1800</prop> <!-- 30 mins -->
<prop key="AbandonedConnectionTimeout">600</prop> <!-- 10 mins -->
</props>
</property>
</bean>
有人可以告诉我为什么在 1 小时后失败,即使交易处于活动状态。
【问题讨论】:
-
询问您的 DBA,如果数据库用户的配置文件具有资源限制(特别是 idle_time)。
-
我没有使用多线程并且它失败了。
-
另外,我们需要配置线程数以至少最小连接数。否则连接会失效并抛出异常