Неактивная сессия в Oracle от JDBC - PullRequest
3 голосов
/ 27 сентября 2011

У нас есть веб-сервис, написанный на Java, который подключается к базе данных Oracle для извлечения данных. Недавно мы встретили слишком много неактивных сеансов в базе данных Oracle от JDBC, который является нашим веб-сервисом.

Мы уверены, что все соединения закрываются и устанавливаются в нуль после каждого процесса.

Может ли кто-нибудь помочь нам в этом? Почему это вызывает неактивный сеанс в базе данных и что может быть решением этой проблемы.

Спасибо.

1 Ответ

8 голосов
/ 27 сентября 2011

В чем конкретно проблема?

Обычно сервер приложений среднего уровня создает пул соединений. Когда ваш код запрашивает соединение, он получает уже открытое соединение из пула, вместо того, чтобы создавать новые подключения к базе данных. Когда ваш код закрывает соединение, оно возвращается в пул, а не через физическое закрытие соединения. Это означает, что будет разумное количество соединений с базой данных, где STATUS в V$SESSION является «НЕАКТИВНЫМ» в любой данный момент времени. Это совершенно нормально.

Даже под нагрузкой большинство соединений с базами данных среднего уровня в большинстве случаев являются "НЕАКТИВНЫМИ". Состояние «НЕАКТИВНО» просто означает, что в момент запуска запроса сеанс не выполнял оператор SQL. Большинство соединений будут проводить большую часть своего времени, сидя в пуле соединений, ожидая, когда сеанс Java откроет их, или ожидая, пока сеанс Java сделает что-то с данными, или ожидая в сети передачи данных между компьютерами.

Вы действительно получаете ошибку (то есть ORA-00020: превышено максимальное количество процессов)? Или вас просто смущает количество записей в V$SESSION?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...