ORA-01000 - Превышено максимальное количество открытых курсоров - Spring JDBC 3.2.5

У нас есть приложение Java Enterprise, работающее на Weblogic Server 12c с использованием Spring JDBC 3.2.5 для доступа к базе данных Oracle 11gR2. В производственной среде через некоторое время мы получили это исключение: "ORA-01000 - Превышено максимальное количество открытых курсоров" и необходимо перезапустить экземпляр сервера; кажется, что открытые курсоры увеличиваются все больше и больше, пока не достигнут максимального порога, установленного в Oracle. Увеличение порога не решило проблему. Мы проверяем (очень большой) исходный код, но в настоящий момент мы не нашли ни одной точки, где мы пропускаем закрытие соединения; Более того, мы обычно не открываем и не закрываем соединения, но мы используем Spring JdbcTemplate для обработки взаимодействия с базой данных. Может ли быть проблема весны? Есть намеки?

2 ответа

Решение

Это была ошибка этой версии Spring. обновить Spring Library

Сообщение оракула "ORA-01000 - Превышено максимальное количество открытых курсоров" может быть вызвано не закрытием PreparedStatementс или ResultSets. каждый PreparedStatement или же ResultSet курсор в базе данных Oracle

Чтобы обойти эту ошибку за короткий срок, вы можете увеличить лимит открытых курсоров в базе данных (но рано или поздно это произойдет снова).

Чтобы обойти эту ошибку на самом деле вы должны проверить все приложение и закрыть все открытые PreparedStatementс или ResultSets.

Также промежуточный драйвер JDBC, который отслеживает все PreparedStatementс или ResultSets может помочь определить проблемную часть приложения.

Другие вопросы по тегам