quinta-feira, 8 de setembro de 2016

ERRO: ORA-13541 >> system moving window baseline size ( ) greater than retention ( )

Este erro ocorre quando tentamos alterar a configuração de retenção dos relatórios AWR no banco de dados Oracle.

No exemplo abaixo, estamos alterando o tempo de retenção do relatório para 30 dias ou 43200 minutos.

SQL> execute dbms_workload_repository.modify_snapshot_settings (interval => 60, retention => 43200);

BEGIN dbms_workload_repository.modify_snapshot_settings (interval => 60, retention => 43200); END;

*
ERROR at line 1:
ORA-13541: system moving window baseline size (7862400) greater than retention
(2592000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 174
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 222
ORA-06512: at line 1


O erro acima acontece, devido a janela de retenção atual dos relatórios AWR estar configurarada para um período maior do que aquele que estamos tentando configurar.

Podemos obter essa informação com o SQL abaixo, que nos mostrará o tempo configurado para a janela de retenção:

SQL> SELECT moving_window_size FROM dba_hist_baseline WHERE  baseline_type = 'MOVING_WINDOW';

MOVING_WINDOW_SIZE
------------------
                91



Para podermos fazer a alteração que desejamos, precisamos alterar o tempo da janela de retenção antes de executarmos o comando bbms_workload_repository.modify_snapshot_settings, deixando essa janela com o mesmo tempo que iremos configurar, conforme descrito abaixo:

Para mudarmos a janela de retenção, devemos executar:

SQL> exec DBMS_WORKLOAD_REPOSITORY.modify_baseline_window_size( window_size =>30);

Neste caso, o window_size é igual a 30 dias que corresponde aos 43200 minutos que iremos configurar em nossa retenção.

1 hora = 60 minutos
1 dia = 24 horas
1 dia = 1440 minutos (60minX24h)
30 dias = 43200 minutos (1440min * 30dias)



Após a execução do comando de alteração da janela de retenção, podemos verificar se o valor foi realmente alterado:

SQL> SELECT moving_window_size FROM dba_hist_baseline WHERE  baseline_type = 'MOVING_WINDOW';

MOVING_WINDOW_SIZE
------------------
                30


Agora, que já temos a janela de retenção configurada de forma adequada para a nossa necessidade, podemos fazer a alteração na geração / retenção dos relatórios AWR.

SQL> execute dbms_workload_repository.modify_snapshot_settings (interval => 60, retention => 43200);

PL/SQL procedure successfully completed.