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, он не пересчитывается; обновите и его). На стороне приложения исправьте максимум пула соединений и очистку простаивающих соединений.
Ещё по этой СУБД
- ORA-04061existing state of package/procedure has been invalidated
- ORA-01466unable to read data - table definition has changed
- ORA-08176consistent read failure; rollback data not available
- ORA-01113file N needs media recovery
- ORA-02393exceeded call limit on CPU usage
- ORA-12801error signaled in parallel query server Pnnn