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]