Я имею дело с проблемой с менеджером Oracle UCP, использующим Oracle ojdbc 12 и Java 8. При сбое запуска пула UCP я хочу, чтобы созданные им соединения были закрыты.
Когда ORA-02391: превышен одновременный предел SESSIONS_PER_USER, возникает ошибка во время инициализации пула, например, когда значение initPoolSize слишком велико, API-интерфейс startConnectionPool выдает исключение, и состояние пула НЕУДАЧИЛО. Это ожидаемое поведение.
Однако вызов stopConnectionPool () переводит состояние пула в состояние STOPPED без фактического закрытия какого-либо соединения. Я вижу локальные соединения, использующие netstat, и на сервере v $ session.
Моя догадка такова, как упоминается в документации (https://docs.oracle.com/cd/E18283_01/java.112/e12265/manage.htm)
остановка пула должна работать, только когда он находится в состоянии ЗАПУСК или ЗАПУСК / РАБОТА. Но в этом случае stopConnectionPool (), вероятно, должен выдать ошибку, что я не вижу.
Таким образом, вопрос заключается в следующем: должен ли API UCP stopConnectionPool () работать на отказавшем пуле?
Может быть, единственный выход - уничтожить бассейн?