- Este tópico contém 12 respostas, 6 vozes e foi atualizado pela última vez 14 anos, 9 meses atrás por
Peterson.
-
AutorPosts
-
14 de junho de 2011 às 10:08 pm #99608
Peterson
ParticipanteBoa tarde amigos,
Vendo a view dba_tables, vi que algumas tabelas estão com datas muito antigas na coluna last_analyzed.
Gostaria de saber o que faz essas análises periódicas, como são coletadas, com que periodicidade, se há um job que faz isso e porque algumas tableas são analisadas e outras não.
Alguém teria uma sugestão de material ou link para eu verificar isso?
14 de junho de 2011 às 10:22 pm #99609vieri
ParticipanteFazem análise periodica dos seus dados,
para o oracle ter informação atualizada sobre suas tabelas quando for escolher um plano de execução para qualquer query.Monte um processo para coletar as estátisticas toda semana.
isso é o minimo que vc precisa fazer e saber…
o máximo será a medida que vc ter problemas com performance…
e acabará tendo se não coletar as estátisticas em dia , e não usar o metodo correto.Mas dependendo da complexidade do sistemas, basta estár em dia para te atender.
14 de junho de 2011 às 10:26 pm #99610vieri
Participanteexemplo doque ele coleta:
volumetria,
armazanamento dos dados,
cardinalidade,
datatype,
cardinalidade,
composição dos dados…entre outras coisas mais complexas…
etc..etc..
pesquise no google por “analyze table compute statistics” e “dbms_gather_table_stats”.
vc pode ter que dominar esse assunto ou apenas saber monta um job para coletar as estátisticas, isso vai depender do seu ambiente.
eu ja tive um caso que eu tive que parar de coletar estatisticas de uma tabela. ja tive caso de ter que alterar o modo para estimate, pois a analyze foi demorada, ja tive caso de alterar árametros da coleta que são vários… e por ai vai…
qualquer dúvida posta ai..
14 de junho de 2011 às 10:28 pm #99611Peterson
ParticipanteObrigado pela resposta Vieri.
Gostaria de saber mais sobre as ferramentas de coletas de estatísticas, como criar jobs para fazer isso periodicamente e como visualizar o que há implementado atualmente.
Onde consigo material sobre o assunto?
14 de junho de 2011 às 10:31 pm #99612felipeg
Participante[quote=”Peterson”:2m9xpj7k]Obrigado pela resposta Vieri.
Gostaria de saber mais sobre as ferramentas de coletas de estatísticas, como criar jobs para fazer isso periodicamente e como visualizar o que há implementado atualmente.
Onde consigo material sobre o assunto?[/quote]
Peterson,
Da uma olhada nesse link, tem tanto a parte de explicação como a parte de automatização.
http://download.oracle.com/docs/cd/B193 … /stats.htm
Atenciosamente,
Felipe.14 de junho de 2011 às 11:43 pm #99618CleitonHanzen
ParticipanteOpá….
Cara, esse negócio de estatísticas é bastante complicado e muito, mas muito específico para cada ambiente/aplicação.
Já vi sistemas que se coletar estatísticas o sistema simplesmente não roda de jeito nenhum, já vi sistemas que a coleta tem q ser feita com o analyze (mesmo no 10g), já vi sistema que coleta com estimate_percent=1 funciona melhor do que estimate_percent=10, enfim, casos e casos.
O que fica de dica é: Faça as coletas com parâmetros diferenciados e acompanhe desde o I/O e CPU do servidor até as diferenças de planos de execução gerados e quais são as melhorias de tempos/recursos obtidos. Algumas vezes gostaria que a Oracle tivesse uma “matemática” pra ajudar a encontrar a melhor forma, mas nem se vc abrir chamado na Oracle sai alguma coisa de “útil” sobre coleta de estatísticas.
Então, o jeito é testar, testar e testar.
Abs.
14 de junho de 2011 às 11:53 pm #99620vieri
Participanteeu particularmente uso a crontab no linux
e a DBMS_JOBS no oracle que apesar de antiga me atende bem.para outros cenários é melhor a DBMS_SCHEDULER.
No windos o agendador de tarefas.
não foge muito disso dai.
14 de junho de 2011 às 11:58 pm #99621vieri
Participanteo Chiappa é um cara que conhece muito de oracle tem conhecimento profundo sobra stats caso vc queira aprofunda-lo.
http://br.dir.groups.yahoo.com/group/or … 4935?var=1
15 de junho de 2011 às 12:21 am #99624Sousa04
Participantese isso te ajudar em algo,
eu uso esse script na crontab do linux para realizar a coleta do ambiente, se mesmo após a execução do script a tabela continua com o last_analyzed antigo ou em branco, a tabela pode estar com a estatística bloqueada ou pode ser uma tabela temporária.PROMPT coleta de statística
declare
v_dbms varchar2(800);
BEGIN
FOR I IN
(
select DISTINCT(OWNER)AS OWNER
from dba_tables
where owner not in(‘SYSTEM’,’OLAPSYS’,’IFSCTXTEST2′,’SYS’,’TSMSYS’,’MDSYS’,’IFSCTXTEST0′,’SYSMAN’,’IFSCTXTEST1′,’EXFSYS’,
‘IFSCTXTEST3′,’WMSYS’,’ORDSYS’,’ORACACHE’,’CTXSYS’,’PERFSTAT’,’OUTLN’,’DBSNMP’,’DMSYS’,’XDB’)
and LAST_ANALYZED ‘||””||I.OWNER||””||’,ESTIMATE_PERCENT=>20,
METHOD_OPT=>’||””||’FOR ALL INDEXED COLUMNS SIZE AUTO’||””||’,GRANULARITY=>’||””||’ALL’||””||’,DEGREE=>8,CASCADE=>TRUE); END;’;
DBMS_OUTPUT.PUT_LINE(v_dbms);
EXECUTE IMMEDIATE v_dbms;
END LOOP;
END;
/15 de junho de 2011 às 4:37 am #99630rman
ParticipanteEu uso o seguinte comando:
ANALYZE TABLE COMPUTE STATISTICS;
Legal, que pode ser aplicar em indices também.
ANALYZE INDEX COMPUTE STATISTICS;
As estatísticas é a base para o Oracle montar o plano de executação mais eficiente. Realmente não existe nenhum job padrão que já venha no banco, para a coleta das estatísticas ?
15 de junho de 2011 às 3:46 pm #99634Sousa04
ParticipanteBem, segundo o meu manual aqui do 10G
se o banco de dados foi criado com o DBCA as estatísticas do atimizador serão coletadas automaticamente uma vez por dia entre 22 e 6 horas. Ele ainda diz que se a tabela sofre um crescimento ou diminuição de 10% no período de 24h a coleta uma vez por dia pode não ser suficiente. Ainda informa que é recomendável pela Oracle a coleta de estatística toda vez que tabela sofrer 10% de aumento/diminuição.15 de junho de 2011 às 5:28 pm #99641felipeg
Participante[quote=”felipeg”:m6ukvw44][quote=”Peterson”:m6ukvw44]Obrigado pela resposta Vieri.
Gostaria de saber mais sobre as ferramentas de coletas de estatísticas, como criar jobs para fazer isso periodicamente e como visualizar o que há implementado atualmente.
Onde consigo material sobre o assunto?[/quote]
Peterson,
Da uma olhada nesse link, tem tanto a parte de explicação como a parte de automatização.
http://download.oracle.com/docs/cd/B193 … /stats.htm
Atenciosamente,
Felipe.[/quote]Pessoal, bom dia
Apenas para saber.
Alguém chegou a ler as documentações que foram passadas nos posts acima?Ali tem tanto as explicações sobres os tipos de coleta, o que é cada subtipo, coletas automáticas, jobs utilizados e tudo mais.
O link que o Vieri passou também é muito bom, o Chiappa é um monstro nessas coisas.
Atenciosamente,
Felipe.15 de junho de 2011 às 9:12 pm #99655Peterson
ParticipanteAmigos, muito obrigado! O material enviado é muito farto e tem ajudado muito a formar conceitos no que eu precisava!
Obrigado a todos!
-
AutorPosts
- Você deve fazer login para responder a este tópico.