Chiappa, voltou a normalidade.

 

Pelo SQL Developer, a função estava com uma bolinha verde, recompilei ela e não 
tem mais o gargalho. O fornecedor criou alguns índices e melhorou algumas views.

 

Como conhecimento não é demais, estarei olhando os links para um aprofundamento 
dos eventos.

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Enviada em: terça-feira, 23 de dezembro de 2014 16:07
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: RES: [oracle_br] Re: perfor mance em função

 

  

Sem esses detalhes todos que citei, fica Bem Difícil se dizer seja o que for 
sem ser um belo dum chutão.... AO MENOS o tal fornecedor (ou vc mesmo, se vc 
tiver acesso ao database e puder extrair o texto exato da query em questão) tem 
que fazer esses testes mínimos que eu disse - ie, checar o texto do SQL e ver 
AONDE a tal função está sendo chamada, tentar extrair os Planos e as estats de 
execução (tais como tempo geral e de CPU gasto, número de linhas processadas, 
entre outros) na V$SQL a partir duma execução dum SQL equivalente mas sem 
função e depois com uma função dummy/mínima... Senão, rigorosamente Qualquer 
Coisa que digamos aqui vai estar pra chute, yes ??? PRINCIPALMENTE esse teste 
do SQL sem função alguma, ele vai ser Extremamente revelador , penso eu...

  Sobre o evento de wait "Library cache:xxxxx", normalmente ele aparece quando 
muitas e múltiplas execuções da mesma exata rotina PL/SQL estão ocorrendo, 
https://andreynikolaev.wordpress.com/2011/05/01/divide-and-conquer-the-true-mutex-contention/
 tem um testcase... Dá uma olhada em 
http://www.wellingtonprado.com/2012/05/04/library-cache-mutex-x-e-agora/ que o 
Autor fala um pouco também dum cenário desses, E não deixe (como eu disse 
antes) de checar no Suporte Oracle por possíveis bugs de gasto de CPU em 
funções, e também com mutexes - afaik os principais bugs de mutexes já foram 
corrigidos no 11.2.0.3 que é a sua versão, mas vale SIM um check...
  
   Só repito : São os testes acima que vão te dar subsídios se a tal função 
realmente está sendo executada muitos milhares de vezes porque está sendo 
chamada numa query associada com tabelas de muitos e muitos milhares de linhas 
(caso em que, como eu disse na msg original, vc TALVEZ possa mitigar esse 
efeito implementando cache de resultados, vide os links que passei)... Mas 
antes de sair fazendo SEJA O QUE FOR, plz FAÇA OS TESTES ANTES, ok ?

 []s
 
   Chiappa



Responder a