DBAtlas · Atlas de operações de banco de dados

ORA-00020: maximum number of processes (N) exceeded (número máximo de processos (N) excedido)

Oracle

O que significa?

O número de processos da instância atingiu o limite superior definido pelo parâmetro de inicialização PROCESSES, e nenhuma nova conexão/processo pode ser criado. Novas sessões não conseguem se conectar; até um administrador pode não conseguir.

Por que acontece?

Um pool de conexões da aplicação superdimensionado, conexões que nunca são fechadas (vazamentos), mais usuários simultâneos do que o esperado ou um parâmetro PROCESSES baixo demais levam à ultrapassagem do limite. Às vezes, jobs em background travados ou processos de consultas paralelas também consomem processos.

Como resolver

Você pode se conectar com sqlplus -prelim / as sysdba, mas essa conexão não executa SQL (não é possível consultar v$session); ela só serve para oradebug (por exemplo, hanganalyze) e SHUTDOWN ABORT. Para liberar slots, encerre com cuidado, no nível do sistema operacional, processos servidores ociosos da aplicação (ps -ef | grep 'LOCAL=NO'); depois, com uma conexão SYSDBA normal, encontre as sessões vazadas via v$session/v$process e feche-as com ALTER SYSTEM KILL SESSION. Como solução permanente, aumente PROCESSES e reinicie a instância (se SESSIONS estiver definido explicitamente no spfile, ele não é recalculado; atualize-o também). No lado da aplicação, corrija o máximo do pool de conexões e a limpeza de conexões ociosas.

Abrir no DBAtlas →

Mais entradas deste banco