Oracle
 sql >> база данни >  >> RDS >> Oracle

java.sql.SQLRecoverableException - свържете се отново от jdbc

Изглежда, че връзката се прекъсва от някаква защитна стена или друга дейност. Срещнахме подобен проблем, при който базата данни прекъсваше връзките, които бяха неактивни в продължение на 30 минути.

За да преодолеем проблема, ние настроихме пула на базата данни, като посочихме следните свойства

testOnBorrow:-Setting it true will force the pooling provider to run the validation query while handing out the connection to the application.
testWhileIdle:-Setting it true will enable the validation when the connection is sitting idle in the pool.
timeBetweenEvictionRunsMillis:- Setting this property to non-zero will allow the evictor thread to run,which will test the idle connections.

Възпроизвеждането на проблема ще изисква прекратяване на връзката от страна на базата данни. Извършихме малък тест с помощта на mssql, при който можем да прекратим връзката с помощта на сървърните инструменти и пулът установяваше връзката отново.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${myjdbc.driverClassName}" />
    <property name="url" value="${myjdbc.url}" />
    <property name="username" value="${myjdbc.username}" />
    <property name="password" value="${myjdbc.password}" />
    <property name="testOnBorrow" value="true" />
    <property name="testWhileIdle" value="true" />
    <property name="timeBetweenEvictionRunsMillis" value="3000" />
</bean>

Обърнете внимание, че timeBetweenEvictionRunsMillis е в милизонди.

Горната конфигурация ще провери невалидната връзка и ще ги премахне от пула, ако внезапно бъдат затворени от базата данни или защитната стена.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуване на текуща_времева марка на Oracle в секунди

  2. Заредете лист с данни на Excel в базата данни на Oracle

  3. Изключете елементи според запис

  4. Разбор на XML с неизвестни пространства от имена в Oracle SQL

  5. Oracle 12c XML получава стойност от отговора