Desenvolvimento de sistemas

Fernando Lino
E-mail: fernandolinox@gmail.com
Site: http://flinox.blogspot.com

sábado, 30 de outubro de 2010

Erro: ORA-01000: maximum open cursors exceeded

Caso pegue este erro, durante o sistema em produção, a primeira coisa a se fazer é Focar a Solução ( Afinal a empresa não pode parar ):

- Verifique quantos cursores tem em aberto:
select count(*) from v$open_cursor;

- Verifique qual a quantidade máxima de cursores abertos da sua instância do oracle ( O valor padrão do Oracle é 300 ):


select value from v$parameter where name = 'open_cursors';


- Aumente este valor, coloque 2000 por exemplo, usando o seguinte comando:
alter system set open_cursors=2000;


- Faça novamente o select para verificar o novo valor do parametro:
select value from v$parameter where name = 'open_cursors'


Com o problema contornado e o sistema de volta ao ar, agora deve-se Focar o Problema, este erro de cursor indica que a aplicação está abrindo os cursores e não está fechando... verifique toda a sua aplicação, em todos os momentos que abrir um cursor para pegar os dados preocupe-se em fecha-los, isso é uma excelente prática.


Abraços.
Fernando Lino.

2 comentários:

  1. E quando a empresa (cliente) não permite aumentar o numero de cursores?
    leo_gbf@hotmail.com

    ResponderExcluir
    Respostas
    1. Daí você manda o programador desenvolver o sistema direito e fechar os cursores de sua aplicação =)

      Excluir