Alerta Current Open Cursors Count

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
dejambo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 68
Registrado em: Qua, 27 Jun 2012 8:58 am

Fala galera, acabei de receber o alerta Current Open Cursors Count - A métrica "Current Open Cursors Count" está em 1579, andei pesquisando sobre o alerta mais não consegui muita coisa...alguém poderia me explicar o por que desse alerta e o que deve ser feito?

Obrigado.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

dejambo,

Esta mensagem de erro indica que o ORACLE atingiu o número máximo de cursores abertos. O cursor não se refere exatamente ao objeto CURSOR do PL/SQL.

Se por exemplo você abrir uma sessão SQL com o PL/SQL DEVELOPER e acessar a opção TOOLS->SESSION, vai notar uma série de comandos executados para cada sessão aberta do SQL. Então - a grosso modo - os cursores são comandos executados pelas sessões do SQL.

Se você nunca teve problemas com cursores e derrepente começou a ter, você poderia analisar se foi alterada alguma aplicação que acessa o banco. Este erro poderia ser causado - por exemplo - por uma aplicação java que acessa o banco e não está encerrando corretamente suas operações nele (ex: deixando as transações em aberto).

O parâmetro de banco que controla os cursores seria o "open_cursors". Você pode consultar ele no seu banco digitando o comando:

Selecionar tudo

SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors';
Se achar necessário aumentar o valor deste parâmetro, você deve fazer isso com o comando ALTER SYSTEM do Oracle. Não saberia exatamente para quanto aumentar o parâmetro em sua base. Você pode fazer um teste aumentando o mesmo de 30% a 35% (chute).

Se o seu banco estava funcionando normalmente, não houve aumento de acessos e - mesmo aumentando muito o valor do "open_cursors" - o erro se repetir, seria legal conversar com os seus desenvolvedores, pois realmente pode ser algum problema de aplicação. E neste caso, não adiantaria muito você ficar aumentando simplesmente o parâmetro.

Espero que tenha respondido à sua dúvida,

Abraços,

Sergio Coutinho
dejambo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 68
Registrado em: Qua, 27 Jun 2012 8:58 am

Fala Sergio Coutinho....muito obrigado pela resposta, irei analisar minha base de acordo com o que você disse e também verificar se alguma aplicação está com problemas para encerrar as operações. Quando achar o por que do alerta, postarei aqui. Até mais.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Bom dia Pessoal...

Só complementando, colocando minha opinião, além da grande explicação do Coutinho... acho que vale também, por via das dúvidas, dar uma olhada nos fontes (sources), nos cursores (talvez procurar por OPEN) e, verificar após a data do alerta, se os fontes estão realmente fechando esses cursores.

Grande abraço,
dejambo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 68
Registrado em: Qua, 27 Jun 2012 8:58 am

Bom Dia a todos.

Bom sei que se passaram dois anos desde a criação deste post, mas existe um link muito legal sobre cursores. Segue o link para quem estiver interessado.

Link->http://www.orafaq.com/node/758
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes