在Oracle中空闲时jboss数据库连接超时 [英] jboss database connection timeout when idle in oracle

查看:195
本文介绍了在Oracle中空闲时jboss数据库连接超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have java apps deployed on Jboss eap 6.3 in redhat 6 connected to oracle 11g. I am using jdbc connection like this :

<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连接超时.

If that app idle in several hours and we tried to query int database, database IO connection timeout occur.

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

In my investigation I assume that network firewall blocked this connection if no traffic inside. My question is how to deal with network firewall? Is there any parameter to add inside jndi connection in jboss xml configuration?

推荐答案

您好@squallbayu不能100%确定这是否有帮助,但是您可能已经解决了问题,但是根据我们的DBA的enable=broken,只有在DCD的情况下才有效在数据库服务器(我们的服务器是Oracle ODA)上启用了Dead Connection Detection. Oracle 死连接检测可能会为您提供帮助或您的DBA对其进行设置,并且还有一个描述它的Oracle注释1641167.1.

Hi @squallbayu not 100% sure if this might help, and you've likely already solved the problem however according to our DBA's enable=broken only works if DCD Dead Connection Detection is enabled on the database server, our server(s) an Oracle ODA. This PDF from Oracle Dead Connection Detection might help you or your DBAs get it setup and theres also an Oracle note 1641167.1 that describes it.

行政概述为:

死连接检测(DCD)是Oracle Net的一项功能,可帮助恢复分配给不再可用的连接的资源. Oracle数据库12c中的DCD得到了增强,可以将检测时间从大约15分钟大幅减少到2-3分钟.本文[PDF链接]概述了12c和12c之前的DCD机制,配置细节以及12c机制的优点

Dead Connection Detection (DCD) is a feature of Oracle Net which helps in recovering resources allocated for a connection that is no longer usable. DCD has been enhanced in Oracle Database 12c to reduce detection time drastically from about 15 minutes to as low as 2-3 minutes. This paper [the PDF link] provides an overview of 12c and pre-12c DCD mechanisms, configuration details and benefits of the 12c mechanism

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

In short its basically setting SQLNET.EXPIRE_TIME to something like 10 minutes in the database SQLNET.ORA file.

这篇关于在Oracle中空闲时jboss数据库连接超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆