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: [email protected] 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]
