【问题标题】:Oracle connection pooling - Invalid or Stale Connection found in the connection cacheOracle 连接池 - 在连接缓存中发现无效或陈旧的连接
【发布时间】: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)。
  • 我没有使用多线程并且它失败了。
  • 另外,我们需要配置线程数以至少最小连接数。否则连接会失效并抛出异常

标签: oracle connection-pooling


【解决方案1】:

我没有使用多线程并且它失败了。此外,我们需要配置线程数以至少最小连接数。否则连接会失效并抛出异常

【讨论】:

  • 我也遇到了这个问题。你能告诉我在这种情况下实现多线程是什么意思吗?它像 xml 属性中的属性吗?谢谢
【解决方案2】:

是的,我遇到了同样的问题。解决方案的选项是

【讨论】:

    【解决方案3】:

    URL应该是xml配置中的url。

    【讨论】:

    • 我无法理解您的回答。连接在 1 小时后失败,而不是立即失败。答案请看我上一篇文章中的cmets
    • 嘿,是的,我不确定你想用这个答案说什么。你能详细说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多