terça-feira, 15 de maio de 2018

Oracle 12c - AWR Baseline

Introdução


Baselines são conjuntos de AWR Snapshots que representam um periodo de tempo importante na base de dados, onde geralmente esse periodo é de uma performance aceitavel. O Baseline permite que sejam feitas comparações entre periodos de tempo realizando analises que podem ser reativas ou pro-ativas realizadas atraves de thresholds.

Definições


Algumas definições antes de iniciar o assunto

Estatisticas

O Oracle armazena e utiliza diversas estatisiticas no banco de dados, elas podem ser categorizadas como:

Tipos de Estatisticas
- Object Statistics, Time Model Statistics, System, Instruções SQL, Sessão.

Estatisticas de Sistema nada mais é que um valor dentro daquele determinado instante.

Metricas

Metrica é determinada pela razão de uma estatisticas por um denominador comum, geralmente o "tempo".

Atribuindo um denominador a estatisca obtem um valor, uma informação, a qual é  possivel através de comparações analisar periodos e determinar grandes divergencias que podem apontar para possiveis problemas.

Por exemplo, quantidade de transações é um estatisticas, numero de transações por segundo é uma metrica.

AWR Snapshots

É um conjuto de estatisticas e metricas de banco de dados armazenados que reflete um periodo na base de dados.

AWR Baselines


Baseline é um grupo de snapshot que representa um periodo significativo na base de dados, é util para ser uma base de comparação entre um periodo bom e ruim, afim de diagnosticar problemas de performance comparando divergencias entre utilização da base de dados, perfil de consumo, estatisticas e metricas.

Quando utilizamos Baseline, os snapshots referente ao periodo do não são removidos através job automático de expurgo, são retidos na base de dados enquanto os baselines existirem.

Como exemplo podemos considerar o job de fechamento mensal como um periodo critico, criamos um baseline para cada job de fechamento e armazenamos o baseline por tempo indeterminado, assim quando ocorrer um problema no fechamento mensal temos o historico dos outros meses para realizar as comparações necessário e diagnosticar o motivo da queda de performance.

Tipos de Baseline

Existem 3 tipos de baselines, Fixed, Template e Moving Window
  • Fixed - Este baseline é criado manualmente e reflete um unico periodo.
  • Template - São utilizado como agendamentos para que o MMON crie o baseline no futuro, podendo ser dois tipos de template, single ou repeting.
    • Single - É criado um unico baseline com base no conjunto definido, este tipo de template é util quando sabemos que irá ocorrer uma demanda especifica na base de dados e gostariamos deixar agendando a criação do baseline para esse periodo.
    • Repeting - É criado uma cadeia de baseline que pode ser repetido durante N vezes em um periodo X, é util quando sabemos que existem workloads especificos num determinado periodo que se repete ao longo do tempo
  • Moving Window - Por padrão engloba todos os snapshot dentro da janela de retenção do AWR, ou seja Retention Window >= Moving Window Baseline. É utilizado sobre tudo para monitoração através de adaptive threshold, onde permite que se tenha uma imagem mais apurada do que se acontece na base de dados.


Criando Baseline 


Fixed


BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (
start_snap_id => 145,
                end_snap_id => 146,
baseline_name => 'Teste_Fixed_01',
                dbid => 1491358463,
        expiration => 30);
END;
/

Criando Template - Single


BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
start_time => to_date('15/05/2018 19:30','DD/MM/YYYY HH24:MI'),
end_time => to_date('15/05/2018 20:00','DD/MM/YYYY HH24:MI'),
baseline_name => 'UNIQ_BASELINE_TESTE01',
template_name => 'UNIQ_BASELINE_TESTE01',
expiration => NULL );
END;
/

Criando Template - Repeting


BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
day_of_week =>'ALL',
hour_in_day => 20,
duration => 1,
start_time => to_date('15/05/2018 20:00','DD/MM/YYYY hh24:mi'),
end_time => ADD_MONTHS(SYSDATE, 36),
baseline_name_prefix => 'BASELINE_DIARIO_FECHAMENTO',
template_name => 'BASELINE_DIARIO_FECHAMENTO',
expiration => NULL,
dbid => NULL );
END;
/

Principais Views


• DBA_HIST_BASELINE
• DBA_HIST_BASELINE_DETAILS
• DBA_HIST_BASELINE_TEMPLATE
• DBA_HIST_BASELINE_METADATA


Referencia

Nenhum comentário: