ORA-01000: maximum open cursors exceeded

233 views
Skip to first unread message

Dyego Cruz

unread,
Apr 6, 2011, 12:56:30 PM4/6/11
to jav...@googlegroups.com
Boa tarde,
 
pessoal, já verifiquei e todos statements estão fechados corretamente, mas mesmo assim o erro

ORA-01000: maximum open cursors exceeded

ocorre quando a transação chega no valor de cursor configurado no oracle.
 
Alguém tem alguma idéia do que possa estar acontecendo?
 
valeu

--
Dyego Cruz
Programador PHP, JAVA, ORACLE 10g, PostgreSQL.

Fone: +55 85 8802.3566
          +55 85 9953.8538
www.dyegocruz.com.br

Viktor Sabóia

unread,
Apr 6, 2011, 1:01:09 PM4/6/11
to jav...@googlegroups.com
Cara, verifica se não está ocorrendo uma exceção entre a abertura e o fechamento do cursor... As vezes a gente não bota no finally e fica aberto quando ocorre uma exceção...

--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para javace+un...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/javace?hl=pt-BR.

Pablo Nóbrega

unread,
Apr 6, 2011, 1:53:01 PM4/6/11
to jav...@googlegroups.com, Viktor Sabóia
Mostra o código.

Atenciosamente,

Pablo Nóbrega
Mestrando em Computação Aplicada - UECE
Analista de Sistemas UECE
http://pablonobrega.wordpress.com
pa...@uece.br

Dyego Cruz

unread,
Apr 6, 2011, 1:58:15 PM4/6/11
to jav...@googlegroups.com
valeu, coloquei try/catch nos fechamentos dos statements e parou de acontecer o erro.
 
Brigadão.
 
abraços

Rafael Uchôa

unread,
Apr 6, 2011, 2:05:22 PM4/6/11
to jav...@googlegroups.com
Alguns palhiativos enquanto você procura os problemas.

1- Se for possível, aumentar o nível de conexões no oracle, eu acho que o default é 150, e pode ser que a tua aplicação precise mesmo de mais do que isso.
2- Tem um parametro de inatividade da conexão que você pode passar para o driver da oracle, só não lembro qual o nome agora.
3- Colocar um filtro com thread local pra interceptar os getConection e fechá-os todos no final do request, imaginando que a aplicação seja web.

- Usar o spring transation e esquecer que existe transaction. rs

Em 6 de abril de 2011 14:01, Viktor Sabóia <vikt...@gmail.com> escreveu:

Igor Gonçalves Caballero Melão

unread,
Apr 12, 2011, 8:33:00 AM4/12/11
to jav...@googlegroups.com, Rafael Uchôa
Ja tive esse problema, mas era porque existiam poucos cursores definidos no banco. Dizem por aí que 1000 cursores seriam muito mais do que o suficiente para que a sua aplicação necessita, mas vai depender muito da aplicação.

Segue abaixo as consultas para o banco Oracle.


select count(*) from v$open_cursor;  -- verifica a quantidade de cursores definidos no banco

select value from v$parameter where name = 'open_cursors'; -- verifica a quantidade de cursores aberto no momento
 
alter system set open_cursors=2000; -- altera a configuracao do banco para a quantidade de cursores a desejar



2011/4/6 Rafael Uchôa <rafae...@yahoo.com.br>



--
Atenciosamente
Igor Melão
Reply all
Reply to author
Forward
0 new messages