Páginas

domingo, 19 de janeiro de 2014

[Oracle] - Job para gerar estatísticas para um schema

No Oracle nós temos o otimizador baseado em regra, que é o mais antigo e hoje na versão 10g nem é mais suportado, eo o basedo em custo. Esse último necessita de estatísticas geradas nos objetos, pois é baseado nelas que ele gera os planos de execução e quanto mais atualizadas elas estiverem teoricamente melhor serão os planos de execução gerados.

O script abaixo cria um job usando a dbms_job que gera estatíticas para um schema todos os dias as 3 da manhã:

O script:

declare
   l_job number;
begin
   dbms_job.submit(
      l_job,
      'dbms_stats.gather_schema_stats( ''SCOTT'' );',
      trunc(sysdate)+1+3/24,
      'trunc(sysdate)+1+3/24' );
end;
/

Explicando o start time e o interval:

trunc(sysdate)
pega o dia atual a meia noite (00:00)
trunc(sysdate)+1
Adiciona um dia quer dizer amanhã meia noite
trunc(sysdate)+1+3/24
Adiciona 3 horas (3/24) o que quer dizer que o job vai rodar pela primeira vez amanhã as 03:00 e nos dias subsequentes nesse mesmo horário.

Nenhum comentário:

Postar um comentário