DBAtlas · Атлас эксплуатации баз данных

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

Oracle

Что это значит?

Сессия открыла больше курсоров, чем допускает параметр OPEN_CURSORS. Новый курсор открыть невозможно.

Почему возникает?

Приложение не закрывает открываемые объекты Statement/ResultSet (утечка курсоров), OPEN_CURSORS задан слишком низким для нагрузки или в цикле постоянно подготавливаются новые prepared statements, которые никогда не закрываются.

Как исправить

Отслеживайте открытые курсоры: SELECT * FROM v$open_cursor WHERE sid = ... и смотрите количество по сессиям через v$sesstat. Настоящее решение — закрывать каждый Statement/ResultSet в блоке finally в приложении (устранение утечки курсоров). В качестве обходного пути увеличьте OPEN_CURSORS: ALTER SYSTEM SET OPEN_CURSORS = 1000. Проверьте размер кэша операторов JDBC.

Открыть в DBAtlas →

Ещё по этой СУБД