Отключение сеанса Oracle 9i - PullRequest
0 голосов
/ 17 февраля 2010

[Кросс-постинг от ServerFault]

Я нахожусь в среде разработки, и наш тестовый сервер Oracle 9i не работает уже несколько дней. В результате наши соединения JDBC отключаются после нескольких успешных подключений.

Мы установили эту коробку в нашем ИТ-отделе и передали. Это «наша проблема», поэтому такие варианты, как «спросить вас, администратор БД», не помогут мне. (

Наш сервер настроен на 3 простые базы данных (одна - главная база данных dev, другая - «экспериментальная» база данных dev). Мы используем тонкий драйвер JDBC Oracle 10 ojdbc14.jar (из-за некоторой ошибки в версии 9 драйвера). Мы используем Hibernate для общения с БД.

Единственное, что я вижу, что изменилось, это то, что теперь у нас больше пользователей, подключающихся к серверу. Вместо одного разработчика у нас теперь есть 3. С пулами соединений Hibernate, я думаю, что, возможно, мы достигли некоторого предела?

Кто-нибудь знает, что происходит?

Вот трассировка стека на клиенте:

Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) [hibernate3.jar:na]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) [hibernate3.jar:na]
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [hibernate3.jar:na]
at org.hibernate.loader.Loader.doList(Loader.java:2235) [hibernate3.jar:na]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) [hibernate3.jar:na]
at org.hibernate.loader.Loader.list(Loader.java:2124) [hibernate3.jar:na]
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) [hibernate3.jar:na]
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) [hibernate3.jar:na]
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) [hibernate3.jar:na]
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) [hibernate3.jar:na]
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) [hibernate3.jar:na]
...
Caused by: java.sql.SQLException: Io exception: Connection reset
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:829) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) [hibernate3.jar:na]
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812) [hibernate3.jar:na]
at org.hibernate.loader.Loader.doQuery(Loader.java:697) [hibernate3.jar:na]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) [hibernate3.jar:na]
at org.hibernate.loader.Loader.doList(Loader.java:2232) [hibernate3.jar:na]

Ответы [ 2 ]

0 голосов
/ 14 марта 2010

У меня была похожая проблема с Oracle и другими базами данных. Это происходит, когда сервер БД закрывает соединение (например, по таймауту). Вы можете легко справиться с ситуацией с пулом соединений (например, c3p0). Смотрите также здесь и здесь .

На всякий случай мой файл c3p0.properties выглядит так:

c3p0.preferredTestQuery=SELECT 1 from dual
c3p0.maxConnectionAge=3600
c3p0.testConnectionOnCheckout=true
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=30
c3p0.breakAfterAcquireFailure=false
0 голосов
/ 17 февраля 2010

Какой JDK вы используете для Java? ojdbc14 предназначен для JDK 1.4 и более ранних версий. В этой версии может быть ошибка в вашей базе данных, но если вы используете JDK 5 или 6, я бы порекомендовал найти версию драйвера JDBC для вашего JDK. Название JAR будет указывать JDK 5 или 6 в некотором роде.

В поиске Google появилась эта тема с форумов Oracle. Посмотрите журналы Oracle и посмотрите, есть ли сообщение, подобное тому, которое цитируется в этой теме.

...