У меня есть код JDBC, который извлекает данные из Oracle.java jdbc и oracle - максимальные открытые курсоры превышены
В моем методе я использую подготовленное утверждение, однако я не закрываю это подготовленное заявление. Чтобы проверить это, я побежал это в цикле и достаточно уверен, что я получил исключение:
ORA-01000: maximum open cursors exceeded
Мой вопрос находится в случае управляемой среде (код развернут на сервере Java EE приложений с использованием пулов соединений):
- Что происходит с приложением?
- Неужели он никогда не сможет запустить любой SQL-запрос в базу данных, если соединение не будет закрыто/переработано? (предположим, что в пуле есть только 1 соединение)
Я предполагаю, что соединения в бассейне на самом деле не закрыты - сеанс оракула будет живым.
Благодаря Стивен - да эта часть понимается относительно того, как предотвратить это - мой вопрос больше относится к тому, что влияние, если это произойдет - это похоже утечка соединений, которые могут принести применение в тупик - но в случае пропущенных курсоров - это приведет к остановке приложения? – akila
@akila - утечка объектов ResultSet (т. Е. Неспособность закрыть их) приведет к сбою запросов, что может привести к остановке приложения. –
спасибо - я думаю, я просто попробую это с помощью какого-нибудь сервера приложений и подтвержу – akila