Pular para o conteúdo

Como entrar no Oracle com ORA-00020: maximum number of processes (25) exceeded

Como entrar no Oracle com ORA-00020: maximum number of processes (25) exceeded

Reiniciar não é a única opção (derrubar sessões também é uma opção, mas você pode apenas mascarar o problema real), você ainda pode colocar uma sessão (a que você suspeita que esteja em LOOP, por exemplo) em modo TRACE, por exemplo.

Isto é possível através da opção prelim do SQL*Plus (utilizando um cliente 10gR1 ou superior). Como você não tem uma sessão, e sim apenas um processo, não pode pesquisar as VIEWs, mas todos os comandos do oradebug, por exemplo (que só precisa de um processo) funcionam perfeitamente.

[oracle@CentOS5 ~]$ sqlplus / AS SYSDBA 
SQL*Plus: Release 11.2.0.2.0 Production on Sun Feb 20 07:08:20 2011 
Copyright (c) 1982, 2010, Oracle. All rights reserved. 
ERROR: ORA-00020: maximum number of processes (25) exceeded 
Enter user-name: / as sysdba 
ERROR: ORA-00020: maximum number of processes (25) exceeded 
Enter user-name: / AS SYSDBA 
ERROR: ORA-00020: maximum number of processes (25) exceeded 
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting 

SQL*Plus [oracle@CentOS5 ~]$ sqlplus -prelim / AS SYSDBA 
SQL*Plus: Release 11.2.0.2.0 Production on Sun Feb 20 07:09:01 2011 
Copyright (c) 1982, 2010, Oracle. All rights reserved. 
SQL> SELECT COUNT(*) FROM V$PROCESS; 
SELECT COUNT(*) FROM V$PROCESS * ERROR at line 1: ORA-01012: not logged on Process ID: 0 Session ID: 0 Serial number: 0 
SQL> !ps aux | grep ORCL oracle 24199 0.2 0.7 696048 16096 ? Ss 07:06 0:00 ora_pmon_ORCL oracle 24201 0.2 0.6 695216 13868 ? Ss 07:06 0:00 ora_psp0_ORCL oracle 24203 5.9 0.6 695216 13800 ? Ss 07:06 0:12 ora_vktm_ORCL oracle 24207 0.1 0.6 695216 13872 ? Ss 07:06 0:00 ora_gen0_ORCL oracle 24209 0.1 0.6 695216 13740 ? Ss 07:06 0:00 ora_diag_ORCL oracle 24211 0.2 1.0 695216 20920 ? Ss 07:06 0:00 ora_dbrm_ORCL oracle 24213 0.1 0.7 695216 14580 ? Ss 07:06 0:00 ora_dia0_ORCL oracle 24215 2.3 0.9 695216 19532 ? Ss 07:06 0:04 ora_mman_ORCL oracle 24217 0.2 0.9 699756 19648 ? Ss 07:06 0:00 ora_dbw0_ORCL oracle 24219 0.2 1.7 710768 36432 ? Ss 07:06 0:00 ora_lgwr_ORCL oracle 24221 0.2 0.7 695216 15024 ? Ss 07:06 0:00 ora_ckpt_ORCL oracle 24223 0.2 1.3 695216 27348 ? Ss 07:06 0:00 ora_smon_ORCL oracle 24225 0.1 0.9 695216 19656 ? Ss 07:06 0:00 ora_reco_ORCL oracle 24227 0.8 2.4 698132 49908 ? Ss 07:06 0:01 ora_mmon_ORCL oracle 24229 0.2 0.7 695216 16368 ? Ss 07:06 0:00 ora_mmnl_ORCL oracle 24231 0.1 0.6 696104 13844 ? Ss 07:06 0:00 ora_d000_ORCL oracle 24233 0.1 0.6 695248 13048 ? Ss 07:06 0:00 ora_s000_ORCL oracle 24281 0.1 1.8 718960 38108 ? Ss 07:07 0:00 ora_arc0_ORCL oracle 24283 0.2 2.2 727152 46808 ? Ss 07:07 0:00 ora_arc1_ORCL oracle 24285 0.1 1.8 718960 38156 ? Ss 07:07 0:00 ora_arc2_ORCL oracle 24287 0.1 1.8 718960 37900 ? Ss 07:07 0:00 ora_arc3_ORCL oracle 24289 65.1 0.7 695252 15364 ? Rs 07:07 2:01 ora_qmnc_ORCL oracle 24293 0.3 1.2 695740 26476 ? Ss 07:08 0:00 ora_q000_ORCL oracle 24303 0.2 0.5 694948 11680 ? Ss 07:09 0:00 oracleORCL (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 24308 0.0 0.0 4576 968 pts/0 S+ 07:10 0:00 
/bin/bash -c ps aux | grep ORCL oracle 24310 0.0 0.0 4004 664 pts/0 R+ 07:10 0:00 grep 
ORCL SQL> oradebug setospid 24217 
Oracle pid: 10, 
Unix process pid: 24217, image: oracle@CentOS5.localdomain (DBW0) 
SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_dbw0_24217.trc 
SQL> oradebug unlimit; Statement processed. 
SQL> oradebug event 10046 trace name context forever, level 12 Statement processed. 
SQL> !tail /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_dbw0_24217.trc 
WAIT #0: nam='rdbms ipc message' ela= 1119317 timeout=300 p2=0 p3=0 obj#=-1 tim=1298196713388468 *** 2011-02-20 07:11:55.276
 WAIT #0: nam='rdbms ipc message' ela= 1887052 timeout=188 p2=0 p3=0 obj#=-1 tim=1298196715275854 *** 2011-02-20 07:11:58.279
 WAIT #0: nam='rdbms ipc message' ela= 3001340 timeout=300 p2=0 p3=0 obj#=-1 tim=1298196718279168 *** 2011-02-20 07:12:01.289
 WAIT #0: nam='rdbms ipc message' ela= 3005818 timeout=300 p2=0 p3=0 obj#=-1 tim=1298196721289138 SQL>
Ricardo Portilho Proni

Ricardo Portilho Proni

Com 20 anos de experiência profissional, Oracle ACE Member – eleito pela Oracle Corporation um dos maiores especialistas do mundo em Oracle Database- Trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil. Certificado em Oracle, SQL Server, DB2, MySQL, Sybase e Websphere. Conselheiro do GPO e do GUOB, palestrante do ENPO, GUOB Tech Day e Oracle Open World, escritor da Revista SQL Magazine e Instrutor na Nerv.

Comentário(s) da Comunidade

  1. Muito bom, esse cenário ocorre em vários ambientes!
    Segue uma observação também para evitar o estouro de sessions. Configurando os parâmetros abaixo, você evitaria o erro.

    license_max_sessions
    license_sessions_warning

    Abraços

  2. Portilho,

    Estou enfrentando o mesmo problema com a versão 11gR2 e testei o exemplo acima, mas persiste sem acesso.
    Poderia(m) postar algo, que venha me ajudar a resolver o problema?
    Obrigado.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress