Dica de como consultar a configuração dos snapshots do AWR (Automatic Workload Repository) e ajustar de acordo a necessidade do ambiente. Por padrão, os snapshots são gerados a cada 60 minutos e são mantidos por 8 dias.
No geral o intervalo de 60 minutos atende bem as necessidades de análise de performance, mas em casos em que o ambiente sofre com picos de carga de trabalho em um curto intervalo de tempo, essa configuração não permite ter uma visão precisa do problema. Pode-se considerarusar um intervalo de 30 minutos e em cenários de throubleshooting, usar um intervalo de 15 ~ 20 minutos pode afinar mais o resultado da análise.
A configuração de retenção é a que normalmente mais requer ajuste e é interessante ter mais de 30 dias de retenção (40 a 60 dias), o que permite fazer uma análise de performance comparando com o mesmo período do mês anterior
Consultando a Configuração Atual
set linesize 200
col dbid format 99999999999999
col snap_interval format a30
col retention format a30
col topnsql format a10
select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
--------------- ------------------------------ ------------------------------ ----------
547647995 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
Neste exemplo temos a configuração padrão com snapshots sendo gerados a cada 60 minutos e sendo mantidos por 8 dias no repositório do AWR.
Alterando a Configuração
Para alterar a configuração, usamos a procedure MODIFY_SNAPHOTS_SETTINGS. O intervalo e a retenção dos snapshots são definidos em minutos, o comando abaixo já foi adaptado para receber o valor da retenção em número de dias e converter para minutos em tempo execução.
Alterando o intervalo para 30 minutos e a retenção para 16 dias:
SQL> exec dbms_workload_repository.modify_snapshot_settings (interval => &intervalo_minutos, retention => &retencao_dias*(24*60));
Enter value for intervalo_minutos: 30
Enter value for retencao_dias: 16
PL/SQL procedure successfully completed.
Consultando configuração atualizada:
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
--------------- ------------------------------ ------------------------------ ----------
547647995 +00000 00:30:00.0 +00016 00:00:00.0 DEFAULT
Para alterar a quantidade de SQL no TOP de cada sessão do relatório (SQL mais demorados, SQL que mais consomem CPU e etc):
SQL> exec dbms_workload_repository.modify_snapshot_settings (topnsql => 50);
PL/SQL procedure successfully completed.
Consultando configurações novamente:
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
--------------- ------------------------------ ------------------------------ ----------
547647995 +00000 00:30:00.0 +00016 00:00:00.0 50