sexta-feira, 27 de janeiro de 2017

Remover snapshots do AWR


Em alguns casos, precisamos remover snapshots desnecessários do AWR.

Para fazer a remoção, vamos precisar saber o ID do snapshot inicial e o ID do snapshot final que iremos remover.

Uma das formas de conseguir essa informação é através do SELECT abaixo:

    SQL> SELECT snap_id, begin_interval_time, end_interval_time FROM  SYS.WRM$_SNAPSHOT order by 2;

Esse SELECT irá retornar a lista de todos os IDs que existem no banco de dados para o AWR.

Exemplo:

  SNAP_ID BEGIN_INTERVAL_TIME            END_INTERVAL_TIME
---------- ----------------------------- -----------------------------
        60 31-AUG-16 10.00.17,771 PM     31-AUG-16 11.00.14,771 PM
        61 31-AUG-16 11.00.14,771 PM     01-SEP-16 12.00.12,500 AM
        62 01-SEP-16 12.00.12,500 AM     01-SEP-16 01.00.58,733 AM
        63 01-SEP-16 01.00.58,733 AM     01-SEP-16 02.00.09,846 AM
        64 01-SEP-16 02.00.09,846 AM     01-SEP-16 03.00.23,926 AM
        65 01-SEP-16 03.00.23,926 AM     01-SEP-16 04.00.38,250 AM
        66 01-SEP-16 04.00.38,250 AM     01-SEP-16 05.00.54,223 AM
        67 01-SEP-16 05.00.54,223 AM     01-SEP-16 06.00.05,353 AM
        68 01-SEP-16 06.00.05,353 AM     01-SEP-16 07.00.49,881 AM
        69 01-SEP-16 07.00.49,881 AM     01-SEP-16 08.00.58,856 AM



Com a informação acima, podemos agora fazer a remoção dos snapshots desnecessários, onde:

low_snap_id é o número do snapshot inicial que será apagado;
high_snap_id é o número do snapshot final que será apagado.


Executar:

BEGIN                                                              
  dbms_workload_repository.drop_snapshot_range(low_snap_id =>60, high_snap_id=>69);                                        
END;
/

Obs.:

A remoção de snapshot via dbms_workload_repository.drop_snapshot_range pode apresentar erros e não ser possível a remoção de forma adequada.

Caso isso ocorra, será necessário excluir e recriar todo o awr.

Para essa recriação, existem os scripts:

SQL> connect / as sysdba
SQL> @?/rdbms/admin/catnoawr.sql
SQL> @?/rdbms/admin/catawrtb.sql

Acesse o link abaixo e obtenha mais informações de como recriar o AWR em um banco de dados Oracle.

http://oracle-sql-procedimentos.blogspot.com.br/2017/01/recriar-o-schema-do-awr.html


Referências:

http://remidian.com/2009/08/purging-sysaux-tablespace-purging-awr-reports/
http://www.dba-oracle.com/t_awr_retention_period.htm
http://www.dba-oracle.com/t_purge_awr_statistics.htm