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

ORA-00020: maximum number of processes (N) exceeded

Oracle

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

Число процессов экземпляра достигло верхнего лимита, заданного параметром инициализации PROCESSES, и новое соединение/процесс создать невозможно. Новые сеансы не могут подключиться; даже администратор может не суметь подключиться.

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

К превышению лимита приводят слишком большой пул соединений приложения, никогда не закрываемые соединения (утечки), больше одновременных пользователей, чем ожидалось, или слишком низкое значение параметра PROCESSES. Иногда процессы также занимают зависшие фоновые задания или процессы параллельных запросов.

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

Можно подключиться через sqlplus -prelim / as sysdba, но в этом соединении нельзя выполнять SQL (v$session не запросить); оно пригодно только для oradebug (например, hanganalyze) и SHUTDOWN ABORT. Чтобы освободить слоты, осторожно завершите простаивающие серверные процессы приложения на уровне ОС (ps -ef | grep 'LOCAL=NO'); затем в обычном соединении SYSDBA найдите утёкшие сеансы через v$session/v$process и закройте их с помощью ALTER SYSTEM KILL SESSION. Для постоянного решения увеличьте PROCESSES и перезапустите экземпляр (если SESSIONS явно задан в spfile, он не пересчитывается; обновите и его). На стороне приложения исправьте максимум пула соединений и очистку простаивающих соединений.

Открыть в DBAtlas →

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