【问题标题】:jboss database connection timeout when idle in oracle在oracle中空闲时jboss数据库连接超时
【发布时间】:2016-05-13 07:23:57
【问题描述】:

我在连接到 oracle 11g 的 redhat 6 中的 Jboss eap 6.3 上部署了 java 应用程序。 我正在使用这样的 jdbc 连接:

<datasource jta="true" jndi-name="java:/jdbc/myjdbc" pool-name="myConfigDS" enabled="true" use-java-context="true" use-ccm="false" statistics-enabled="true">
    <connection-url>jdbc:oracle:thin:@(DESCRIPTION=(enable=broken)(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MYSERVICENAME)))</connection-url>
    <connection-property name="oracle.net.CONNECT_TIMEOUT">10000</connection-property>
    <driver>oracle</driver>
    <pool>
        <min-pool-size>1</min-pool-size>
        <max-pool-size>30</max-pool-size>
        <prefill>true</prefill>
    </pool>
    <security>
        <user-name>myusername</user-name>
        <password>mypassword</password>
    </security>
    <validation>
        <check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
        <background-validation>true</background-validation>
        <background-validation-millis>60000</background-validation-millis>
        <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
    </validation>
    <timeout>
        <blocking-timeout-millis>5000</blocking-timeout-millis>
        <idle-timeout-minutes>15</idle-timeout-minutes>
    </timeout>
</datasource>

如果该应用在几个小时内空闲并且我们尝试查询 int 数据库,则会发生数据库 IO 连接超时。

在我的调查中,我假设如果内部没有流量,网络防火墙会阻止此连接。 我的问题是如何处理网络防火墙? jboss xml配置中的jndi连接内部是否有任何参数要添加?

【问题讨论】:

    标签: oracle jdbc jboss firewall connection-timeout


    【解决方案1】:

    嗨@squallbayu 不是 100% 确定这是否会有所帮助,而且您可能已经解决了问题,但是根据我们的 DBA 的 enable=broken 只有在数据库服务器上启用 DCD Dead Connection Detection 时才有效,我们的服务器(s ) 甲骨文官方发展援助。这个来自 Oracle Dead Connection Detection 的 PDF 可能会帮助您或您的 DBA 进行设置,还有一个 Oracle 注释 1641167.1 对其进行描述。

    执行概述是:

    死连接检测 (DCD) 是 Oracle Net 的一项功能,它有助于恢复为不再可用的连接分配的资源。 Oracle Database 12c 中的 DCD 已得到增强,可将检测时间从大约 15 分钟大幅缩短至 2-3 分钟。本文 [PDF 链接] 概述了 12c 和 12c 之前的 DCD 机制、配置细节和 12c 机制的好处

    简而言之,它基本上在数据库 SQLNET.ORA 文件中将 SQLNET.EXPIRE_TIME 设置为 10 分钟。

    【讨论】:

      猜你喜欢
      • 2014-04-15
      • 2013-05-17
      • 2020-04-29
      • 2017-07-19
      • 2015-04-23
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多