2016-05-13 13 views
1

Ich habe Java-Anwendungen auf Jboss eap 6.3 in redhat 6 mit Oracle 11g verbunden bereitgestellt. ich verwende jdbc Anschluss wie folgt aus: auftretenjboss Datenbankverbindung Zeitüberschreitung im Leerlauf in Oracle

<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> 

Wenn das App im Leerlauf in mehreren Stunden und wir haben versucht, int Datenbank, Datenbank-IO-Verbindung Timeout abzufragen.

In meiner Untersuchung gehe ich davon aus, dass die Netzwerkfirewall diese Verbindung blockiert, wenn kein Verkehr darin ist. Meine Frage ist, wie man mit der Netzwerk-Firewall umgehen? Gibt es einen Parameter, der innerhalb der jboss xml-Konfiguration innerhalb der jndi-Verbindung hinzugefügt werden kann?

Antwort

0

Hallo @squallbayu nicht zu 100% sicher, ob dies helfen könnte, und Sie haben gelöst wahrscheinlich schon das Problem jedoch nach unserem DBA enable=broken nur funktioniert, wenn DCD Dead Connection Detection auf dem Datenbank-Server aktiviert ist, unsere Server (n) eine Oracle ODA. Dieses PDF von Oracle Dead Connection Detection könnte Ihnen oder Ihren DBAs helfen, es einzurichten und es gibt auch eine Oracle Note 1641167.1, die es beschreibt.

Die Executive-Übersicht ist:

Tote Anschluss Detection (DCD) ist ein Feature von Oracle Net, die für eine Verbindung zugewiesenen Ressourcen bei der Wiederherstellung hilft, die nicht mehr verwendbar ist. DCD wurde in Oracle Database 12c verbessert, um die Erkennungszeit drastisch von etwa 15 Minuten auf nur 2-3 Minuten zu reduzieren. Dieses Papier [der PDF-Link] gibt einen Überblick über 12c und 12c vorge DCD Mechanismen, Konfigurationsdetails und Vorteile des 12c Mechanismus

Kurz seine im Grunde Einstellung SQLNET.EXPIRE_TIME zu so etwas wie 10 Minuten in der Datenbank SQLNET .ORA-Datei.

Verwandte Themen