Blz ? Erick, eu não sei como estão hoje, mas um tempo atrás eu tinha visto uns 
produtos da Quest e achei fracos no quesito de Tuning : em especial, eles só 
faziam o EXPLAIN PLAN (que dá o Plano de Execução estimado, e Não o real) dos 
SQLs a analisar, não tinham muitas informações sobre Histogramas, Child Cursors 
e coisas do tipo, além de só coletarem/exibirem estatísticas muito gerais de 
performance do banco..... É algo a analisar/avaliar se esses progs vão ser 
úteis no caso em questão.....

 Marcos, primeira coisa : teu ambiente DESENV contém o ** mesmo ** volume de 
dados que PROD, com o mesmo (ou similar) número de sessões concorrentes, com um 
hardware e um software o mais semelhantes possíveis em relação à PROD ??? Se 
não tem, não vejo NADA DE ESTRANHO em observar performance diferente em 
hardwares diferentes manipulando volumes de dados diferentes com diferente 
número de sessões no banco, não é ?? Faz sentido ? Eu acho que faz.....

 Segundo : essa coluna que vc adicionou, qual é o datatype dela, será que não é 
um datatype complexo/não-escalar como LOB ? Vcs  tem CONSTRAINTS nela , em 
especial FK ? Tem TRIGGERS referenciando ela/usando-a ? Ela é usada nos SQLs da 
aplicação ? Se é usada sim, será que ela não é usada nos WHEREs - obviamente, 
se é citada/usada nos WHEREs e não houver estatísticas e histogramas 
apropriados o CBO pode montar um Plano de Execução impróprio, o que nos leva ao 
Terceiro ponto ....
 
 Terceiro : pra vc SABER o que está sendo diferente em dois databases que pro 
mesmo SQL apresentam performance largamente diferente, vc TEM que coletar 4 
informações cruciais em ambos os bancos - SE vc não é o DBA e portanto não tem 
acesso à todas elas, Peça Suporte/ajuda pro seu DBA... São elas :
 
   a. os indicadores gerais de performance do banco coletados imediatamente 
antes e imediatamente depois da execução do SQL em questão (derivados 
principalmente da V$SYSSTAT) : a idéia é fazer uma coleta da V$SYSSTAT 
imediatamente antes (armazenando numa tabela ou algo assim), executar o SQL e 
imediatamente depois fazer nova coleta, armazenar E fazer a diferença entre os 
valores da segunda e da primeira coleta, o resultado é quanto foi 'gasto' ....

   b. os indicadores de performance/consumo de recursos da sessão (pode ser a 
V$SESSTAT, pode ser a MYSTATS) : http://betteratoracle.com/posts/12-runstats é 
um exemplo possível, eu costumo usar uma Variação desse script, que mostra só 
os indicadores que Foram alterados ou os cuja diferença foi maior que um dado 
valor

   c. os Planos de Execução REAIS : quando vc faz um EXPLAIN PLAN (o que como 
eu disse afaik é o que a maioria das tools faz por vc) vc obtém uma ESTIMATIVA 
do plano de execução do SQL... Para vc obter o plano que REALMENTE foi criado e 
usado, inclusive com Detalhes como qtdade de linhas estimadas e reais, tempo 
gasto, etc) vc pode usar a DBMS_XPLAN, desde que vc TENHA ativado a coleta 
extendida : 
https://blogs.oracle.com/optimizer/how-do-i-know-if-the-cardinality-estimates-in-a-plan-are-accurate
 dá um exemplo...
  
   d. os WAIT EVENTs todos que a execução do SQL sofreu : há diversas maneiras 
de se obter isso mas imho a mais simples é vc fazer um TRACE da sessão 
executando o SQL : http://psoug.org/reference/dbms_monitor.html, 
https://community.toadworld.com/platforms/oracle/b/weblog/archive/2014/06/22/tracing-code-with-dbms-monitor
 e 
http://programmersnotes.com/2013/12/how-to-enable-tracing-in-oracle-db-how-to-read-trace-files/
 tem uns exemplos
  
===>>> Com essas 4 informações vc ** VAI ** descobrir o que está diferente : 
PODE  ser que o plano tenha mudado em um dos databases, PODE ser que o plano 
não mudou mas o banco PROD está rodando o mesmo plano que DESENV mas com 
performance inferior (por causa de waits extras, digamos, ou I/O ineficiente, 
ou qtdade de blocos muito diferente de DESENV)..... Sem essas infos vc vai 
estar CHUTANDO, simples assim....

[]s

  Chiappa
  • ... Marcos Soares marcos....@gmail.com [oracle_br]
    • ... Alessandro Lúcio Cordeiro da Silva alecordeirosi...@yahoo.com.br [oracle_br]
      • ... Marcos Soares marcos....@gmail.com [oracle_br]
    • ... Erick Guimaraes guimaraes.er...@gmail.com [oracle_br]
      • ... jlchia...@yahoo.com.br [oracle_br]
        • ... Marcos Soares marcos....@gmail.com [oracle_br]
        • ... Erick Guimaraes guimaraes.er...@gmail.com [oracle_br]
          • ... jlchia...@yahoo.com.br [oracle_br]

Responder a