Эта проблема может стереть грань между Java и проблемой с базой данных, поэтому прошу прощения, если это неправильное место. Пока не уверен, какая сторона виновата.
Я разработчик Java, временно играю с администратором баз данных в моем проекте, поэтому я новичок в этом. Мы запускаем Oracle 11.2.0.1 на 64-битном сервере Red Hat Linux, который использует наше приложение Java. Недавно мы решили переключить наш экземпляр Oracle 11g с выделенных серверов на общие, и теперь наше приложение часто выдает следующие ошибки:
09:58:00,077 ERROR [main] SparqlHelper:198 - Error performing query:
com.hp.hpl.jena.shared.JenaException: java.sql.SQLRecoverableException: Closed Connection
at oracle.spatial.rdf.client.jena.OracleSemQueryPlan.executeBindings(OracleSemQueryPlan.java:494)
at oracle.spatial.rdf.client.jena.OracleStagePattern.<init>(OracleStagePattern.java:216)
at oracle.spatial.rdf.client.jena.OracleQueryIterBlockTriplesQH.nextStage(OracleQueryIterBlockTriplesQH.java:98)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:94)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:55)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
... (lots more)
Caused by: java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3331)
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3232)
at oracle.jdbc.OracleConnectionWrapper.prepareStatement(OracleConnectionWrapper.java:115)
at oracle.spatial.rdf.client.jena.Oracle.executeQuery(Oracle.java:411)
at oracle.spatial.rdf.client.jena.Oracle.executeQuery(Oracle.java:374)
at oracle.spatial.rdf.client.jena.Oracle.executeQuery(Oracle.java:366)
at oracle.spatial.rdf.client.jena.Oracle.executeQuery(Oracle.java:354)
at oracle.spatial.rdf.client.jena.OracleSemQueryPlan.executeBindings(OracleSemQueryPlan.java:457)
... 75 more
Когда мы отключили общие серверы, приложение снова заработало нормально.
Мы не совсем уверены, где даже искать, чтобы выяснить, что вызывает это, будь то конфигурация на стороне приложения или на стороне базы данных. Мы очень ценим любое понимание этой ошибки или того, где искать.
Нет соответствующих ошибок ORA, так как кажется, что база данных обрабатывает это как обычно. Мы попытались увеличить количество общих серверов, а также диспетчеров,
Пожалуйста, дайте мне знать, если я должен предоставить дополнительную информацию, которую я не смог раскрыть. Спасибо!
Обновление: мы смогли обойти эти ошибки, включив пул диспетчеров на сервере. Это означает, что мы добавили (POOL = on) к параметру диспетчера. Теперь мы видим прерывистые зависания SQL-запросов, которые, как я думал, были вызваны недостаточным распределением общих серверов, но есть 3 или 4 из них, которые не обрабатывают ни одного сообщения.