Re: [oracle_br] Baixa performance no FETCH dentro de PL/SQL

2008-01-10 Por tôpico Gleyson Melo
Fala Rodrigo,

Faça um trace de uma sessão executando essa procedure. Analise o trace RAW
(Não o com TKPROF) e veja exatamente o que está acontecendo. Provavelmente
vai aparecer um montão de linhas WAIT lá. Veja a que se refere este wait.
Ele pode mostrar informações relevantes, não encontradas no TKPROF.

Tem algum db link envolvido na consulta?

Um palpite que se enquadra neste contexto é a forma como você está gerando
estatísticas e chamando a consulta. Se as estatísticas estiverem atualizadas
e você estiver executando a consulta com literais no sqlplus ele vai gerar
um plano de execução X.

Na procedure, eu acredito que você esteja substituindo os literais por
variáveis, vindas de parâmetros ou calculadas no meio da procedure. Com
isso, o próprio Oracle faz a chamada SQL utilizando bind variables (que ele
nomeia como :b1, :b2, ..., :bn).

Utilizando bind variables, o otimizador não vai utilizar as suas bind
variables para gerar o plano de execução. Com isso, se não me engano, ele
vai utilizar o Rule Based Optimizer (RBO), que não vai fazer a melhor opção.

Uma possível solução é chamar a consulta através de Dynamic SQL com o
comando EXECUTE IMMEDIATE. Lá dentro, você monta a consulta, concatenando
strings, formando literais ao invés de Bind Variables.

Tente isso e veja se resolve.Se não, faça um trace (level 16) das duas
consultas e mande pra cá pra gente ler.

Abração.

Em 10/01/08, Rodrigo Telles <[EMAIL PROTECTED]> escreveu:
>
>   Pessoal,
> meu problema é o seguinte:
> Tenho uma query que é executada quase que imediatamente(menos de 1
> segundo)
> se for executada no SQL/PLUS. E tenho a mesma query dentro de uma package
> que começou a ter degradada sua performace após uns problemas de infra. Ao
> debugar a package vejo que o gargalo é no comando FETCH. Ele demora em
> torno
> de 6 minutos para executar.
>
> Vcs ja passaram por isso? Ter uma query que roda rápido adhoc e dentro de
> um
> PL demorar minutos?
>
> O ambiente é AIX e Oracle 8.1.7.4.
>
> Sds
> Rodrigo
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Atenciosamente,
Gleyson Melo
Oracle Database 10g Administrator Certified Professional


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



Re: [oracle_br] Baixa performance no FETCH dentro de PL/SQL

2008-01-10 Por tôpico Rogério Falconi
faça analise das tabelas e indices e/ou regere os indices

Em 10/01/08, Rodrigo Telles <[EMAIL PROTECTED]> escreveu:
>
>   Pessoal,
> meu problema é o seguinte:
> Tenho uma query que é executada quase que imediatamente(menos de 1
> segundo)
> se for executada no SQL/PLUS. E tenho a mesma query dentro de uma package
> que começou a ter degradada sua performace após uns problemas de infra. Ao
> debugar a package vejo que o gargalo é no comando FETCH. Ele demora em
> torno
> de 6 minutos para executar.
>
> Vcs ja passaram por isso? Ter uma query que roda rápido adhoc e dentro de
> um
> PL demorar minutos?
>
> O ambiente é AIX e Oracle 8.1.7.4.
>
> Sds
> Rodrigo
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



[oracle_br] Baixa performance no FETCH dentro de PL/SQL

2008-01-10 Por tôpico Rodrigo Telles
Pessoal,
meu problema é o seguinte:
Tenho uma query que é executada quase que imediatamente(menos de 1 segundo)
se for executada no SQL/PLUS. E tenho a mesma query dentro de uma package
que começou a ter degradada sua performace após uns problemas de infra. Ao
debugar a package vejo que o gargalo é no comando FETCH. Ele demora em torno
de 6 minutos para executar.

Vcs ja passaram por isso? Ter uma query que roda rápido adhoc e dentro de um
PL demorar minutos?

O ambiente é AIX e Oracle 8.1.7.4.

Sds
Rodrigo


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