Res: [oracle_br] ORA-00604: error occurred at recursive SQL level 2

2007-05-21 Por tôpico Nelson Cartaxo
Me intrometendo um pouco ai, muito cuidado com o cursor_sharing=force. Já parei 
um banco de produção por causa desse parametro. Ele começou a fazer blocking 
locks e no final tinha mais de 1000 sessões presas. Portanto aconselho a fazer 
primeiro em desenvolvimento e testar.

Att,

Nelson Cartaxo


- Mensagem original 
De: Vinicius Amorim [EMAIL PROTECTED]
Para: oracle_br@yahoogrupos.com.br
Enviadas: Segunda-feira, 21 de Maio de 2007 11:37:07
Assunto: Re: [oracle_br] ORA-00604: error occurred at recursive SQL level 2

Poxa... muito obrigado, o problema eu ja tinha resolvido com o aumento da
shared pool.

mas da proxima vez, vou tentar sim executar esse procedimento, acredito que
ira resolver!!!

Em 18/05/07, Vitor Hugo Campos vitor.campos@ astem.srv. br escreveu:

 Vinicius, a última linha da mensagem já está dando a dica: ele não
 conseguiu alocar 4200 bytes na shared pool.

 O que pode ter acontecido é que a shared pool esteja toda ocupada com
 cursores SQL abertos e faltou memória para colocar mais um objeto.
 Normalmente isso acontece porque o sistema está gerando SQL's sem
 variáveis de bind (ex: SELECT * FROM CLIENTES WHERE CODCLIENTE = 1, em
 vez de SELECT * FROM CLIENTES WHERE CODCLIENTE = :CODCLIENTE) . Dá uma
 olhada em V$SQL, se houver muitos SQL's com valores literais em vez de
 variáveis de bind, você pode fazer o seguinte:

 1) ALTER SYSTEM SET CURSOR_SHARING= FORCE
 O comando acima vai fazer com que o banco pegue o SQL que a aplicação
 mandou e trocar todos os literais por variáveis de bind. Isso deve ser
 uma solução temporária, porque o banco gasta um pouco mais de CPU
 fazendo essas conversões e, francamente, quem deveria criar as variáveis
 de bind deveria ser a própria aplicação.

 2) Solicitar a correção da aplicação para usar variáveis de BIND em vez
 de literais (e dar uns cascudos nos programadores para eles nunca mais
 fazerem isso)... :P

 Se mesmo assim o erro continuar aparecendo, aumente o valor da shared
 pool.

 Vinicius Amorim escreveu:
 
  Estou com esse problema, alguem pode ajudar...
 
  O banco esta sendo populando por uma aplicacao, nao tem mais nada alem
 do
  oracle e da aplicacao rodando.
 
  Quando chega em um determinado ponto, temos esse erro na log do banco.
 
  Errors in file
  /opt/ora817/ OraHome/admin/ ora817/bdump/ ora817_snp2_ 21949.trc:
  ORA-00604: error occurred at recursive SQL level 2
  ORA-04031: unable to allocate 4200 bytes of shared memory (shared
  pool,JOB$ ,sga heap,state objects)
 
  Aguem sabe o q fazer?
 
  --
  Vinícius Amorim Teixeira
 
  9965 90 18
 
  Email - [EMAIL PROTECTED] com vini.rcc%40gmail. com mailto:vini
 .rcc%40gmail. com
  MSN - vini.amorim@ hotmail.com vini.amorim% 40hotmail. com mailto:vini
 .amorim%40hotmail. com
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 

 --
 Vitor Hugo Campos

 Desenvolvimento - Informática
 Autoglass - Especialista em Vidro Automotivo
 +55 (27) 2121-5531
 http://www.autoglas s.com.br/

 


-- 
Vinícius Amorim Teixeira

9965 90 18

Email - [EMAIL PROTECTED] com
MSN - vini.amorim@ hotmail.com

[As partes desta mensagem que não continham texto foram removidas]




__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



Re: Res: [oracle_br] ORA-00604: error occurred at recursive SQL level 2

2007-05-21 Por tôpico Vitor Hugo Campos
Pois é, por isso que falei que essa solução deve ser temporária. Essa
opção nem deve existir em desenvolvimento, já que o correto é
desenvolver SEMPRE usando variáveis de bind. Além desse seu problema com
locks, eu já vi problemas  na execução de algumas queries paralelas (nem
sei se foi antes ou depois do último patchset da Oracle, mas já vi).
Portanto, o quanto mais rápido o desenvolvimento lançar uma versão com
BIND para voltar ao CURSOR_SHARING=EXACT, melhor.

Nelson Cartaxo escreveu:

 Me intrometendo um pouco ai, muito cuidado com o cursor_sharing=force.
 Já parei um banco de produção por causa desse parametro. Ele começou a
 fazer blocking locks e no final tinha mais de 1000 sessões presas.
 Portanto aconselho a fazer primeiro em desenvolvimento e testar.

 Att,

 Nelson Cartaxo

 Atividade nos últimos dias

*
31
   Novos usuários
   
 http://br.groups.yahoo.com/group/oracle_br/members;_ylc=X3oDMTJmaWo2cDNnBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzExNzk3NjAxMTk-

 Visite seu Grupo
 http://br.groups.yahoo.com/group/oracle_br;_ylc=X3oDMTJldnV0cmlyBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE3OTc2MDExOQ--

 Yahoo! Mail

 Conecte-se ao mundo
 http://us.lrd.yahoo.com/_ylc=X3oDMTJsdWZkYm52BF9TAzk3NDkwNDM3BF9wAzEEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNtYWlsBHN0aW1lAzExNzk3NjAxMTg-;_ylg=1/SIG=10ujd6ds6/**http%3A//mail.yahoo.com.br/

 Proteção anti-spam

 Muito mais espaço

 Yahoo! Barra

 Instale grátis
 http://us.lrd.yahoo.com/_ylc=X3oDMTJvbjJ2a3YyBF9TAzk3NDkwNDM3BF9wAzIEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzExNzk3NjAxMTg-;_ylg=1/SIG=111ngvtas/**http%3A//br.toolbar.yahoo.com/

 Buscar sites na web

 Checar seus e-mails .

 Yahoo! Grupos

 Crie seu próprio grupo
 http://br.groups.yahoo.com/;_ylc=X3oDMTJvdWxtMmJnBF9TAzk3NDkwNDM3BF9wAzMEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzExNzk3NjAxMTg-

 A melhor forma de comunicação

 .

  


-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/