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.
Flinox Informática, consultoria e desenvolvimento de sistemas, mais de 20 anos trabalhando em grandes empresas brasileiras, experiência em integrações de sistemas, ETL Powercenter da INFORMATICA e Streaming de dados com Apache Kafka. A ideia deste blog é compartilhar um pouco do conhecimento, curiosidades e informações gerais.
Desenvolvimento de sistemas
Assinar:
Postar comentários (Atom)
E quando a empresa (cliente) não permite aumentar o numero de cursores?
ResponderExcluirleo_gbf@hotmail.com
Daí você manda o programador desenvolver o sistema direito e fechar os cursores de sua aplicação =)
Excluir