Anterior  Próximo

Navegação:  e-Forms NFC-e 4.8.2.0 > Manual de Manutenção de Banco de Dados e-Forms > Manual de Manutenção de Banco de Dados e-Forms - Oracle > Guia de Configurações da Rotina de Manutenção de Banco de Dados > Coleta de Estatísticas

Coleta manual

Coleta de estatísticas automática deve ser suficiente para a maioria dos objetos de banco de dados que estão sendo modificados a uma velocidade moderada. No entanto, há casos em que a coleta de estatísticas automática pode não ser adequada. Como a coleta de estatísticas automática é executada durante uma janela de tempo durante um período de ociosidade, as estatísticas sobre as tabelas que são significativamente modificados durante o dia podem tornar-se obsoletas. Normalmente, isso pode acontecer em dois casos:

• Tabelas voláteis foram excluídas ou truncadas e posteriormente reconstruídas durante o decorrer do dia.

• Objetos que foram alvos de grandes cargas, que agregam 10% ou mais ao o tamanho total do objeto.

 

Caso seja verificada a necessidade da coleta manual pode-se utilizar o script abaixo que cria uma procedure de coleta de estatísticas e agenda um job para ser executado periodicamente. O script anexo realiza o agendamento da coleta manual de todo o banco.

Scrip de Coleta ManualScrip de Coleta Manual

/*

TABELAS CRÍTICAS DO CONNECTOR, COM GRANDE VOLUME DE DADOS E QUE SÃO UTILIZADAS DURANTE O PROCESSAMENTO

- TBLOGDOCUMENT

- TBPROCESS

- TBPROCESSDATA

- TBLOGODCUMENTSTATUS

- TBLOGDOCMESSAGE

- TBSTATISTICS

- TBLOT

- TBLOTS

- TBDATABASEINPUT

 

O script abaixo mostra a data da última coleta de estatística de cada índice. Se as estatísticas das tabelas críticas do connector tiverem sido atualizadas a mais

de uma semana, isso pode gerar lentidão no processamento.

*/

SELECT STAT.OWNER AS "Schema proprietário",

        STAT. TABLE_NAME AS "Nome do objeto",

        STAT.OBJECT_TYPE AS "Tipo do objeto",

        STAT.NUM_ROWS AS "Quant. de Linhas",

        STAT.LAST_ANALYZED AS "Última coleta das estatísticas"

   FROM SYS.DBA_IND_STATISTICS STAT

  WHERE STAT.OWNER NOT IN ('SYS', 'SYSTEM', 'SYSMAN', 'DBSNMP')

ORDER BY LAST_ANALYZED;

 

/*

Após isso, se houver necessidade, deve-se fazer a atualização das estatísticas.

Para isso substituir o valor <SCHEMA_NAME> pelo nome do usuário e radar o comando abaixo:

*/

EXEC dbms_stats.gather_schema_stats('<SCHEMA_NAME', cascade=>TRUE);

Ao ser executado o script os valores next_date e interval devem ser ajustados:

next_date => to_date('17-10-2013 22:00:00', 'dd-mm-yyyy hh24:mi:ss'')

interval => 'trunc(SYSDATE+1)+22/24'');

 

 

Voltar