tags:

views:

13

answers:

0

I did look at this and this but I dont think they quite answer my question.

I have a routine spring web application which uses a connection pool and I use a oracle.jdbc.pool.OracleDataSource. My datasource actually says,

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
    destroy-method="close">
    <property name="URL" value="xx"/>
    <property name="user" value="xx"/>
    <property name="password" value="xx"/>
    <property name="connectionCachingEnabled" value="true"/>
    <property name="implicitCachingEnabled" value="true"/>
    <property name="maxStatements" value="255"/>
    <property name="connectionCacheProperties">
        <props>
            <prop key="initialLimit">10</prop>
        </props>
    </property>
</bean>

So I have got the destroy-method correct but however after about 10-15 minutes of uptime I get the exception

Caused by: java.sql.SQLException: Io exception: Software caused connection abort: recv failed
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:976)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4394)

Can someone let me know what I am missing here and is there any page where implicitCaching, explicitCaching, connectionCaching are explained? Should I explicitly close/refresh connections?

PS: It would not be preferable to use Oracle 11.x drivers (and I use only Oracle 10.x)