Mesmo com as
rotinas de retenção que são configuradas no AWR, algumas vezes, pode ser que o
repositório do AWR necessite ser expurgado manualmente. Neste artigo vamos
demonstrar um procedimento para o expurgo controlado do repositório do AWR.
Importante: Para a execução deste procedimento, certifique-se
que seus dados foram “salvos” em um “backup” ou mesmo que você não irá utilizar
as informações que serão removidas.
A primeira
coisa que devemos verificar é a quantidade de informação armazenada pelo AWR,
deve-se executar a consulta abaixo:
SQL> set lines 200
SQL> col Nome for
a10
SQL> col Descrição for a60
SQL>
SQL> SELECT OCCUPANT_NAME
NOME,
2 OCCUPANT_DESC DESCRIÇÃO,
3 ROUND(
SPACE_USAGE_KBYTES/1024) "ESPAÇO (M)"
4 FROM V$SYSAUX_OCCUPANTS
5 WHERE OCCUPANT_NAME LIKE
'SM/%'
6 ORDER BY 1 ;
NOME DESCRIÇÃO
ESPAÇO (M)
---------- ------------------------------------------------------------
----------
SM/ADVISOR Server Manageability -
Advisor Framework
323
SM/AWR Server Manageability - Automatic Workload
Repository 4187
SM/OPTSTAT Server Manageability -
Optimizer Statistics History
344
SM/OTHER Server Manageability - Other Components 8
A linha
em destaque é a informação que desejamos saber, ou seja, o tamanho do
repositório de dados do AWR, para este exemplo, o tamanho do repositório é de 4
MB.
Depois vamos
verificar os intervalos de meses que estão armazenados no repositório para que
posteriormente executemos o expurgo.
SQL>
COL BEGIN_INTERVAL_TIME FOR A30
SQL>
COL END_INTERVAL_TIME FOR A30
SQL>
SQL>
SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
2
FROM SYS.WRM$_SNAPSHOT
3
WHERE SNAP_ID = (SELECT MIN (SNAP_ID) FROM SYS.WRM$_SNAPSHOT)
4 UNION
5 SELECT SNAP_ID, BEGIN_INTERVAL_TIME,
END_INTERVAL_TIME
6
FROM SYS.WRM$_SNAPSHOT
7
WHERE SNAP_ID = (SELECT MAX (SNAP_ID) FROM SYS.WRM$_SNAPSHOT)
8 ORDER BY 2
9 /
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
----------
------------------------------ ------------------------------
156971 27-SEP-13 12.00.29.580 AM 27-SEP-13 12.10.31.001 AM
160065 18-OCT-13
11.40.27.729 AM 18-OCT-13
11.50.28.105 AM
Os
valores apresentados pela coluna SNAP_ID, indicam as informações gravadas no
repositório do AWR. Neste exemplo temos informações do mês de Setembro e
Outubro.
Antes de
removermos os dados, vamos verificar os registros de um determinado intervalo,
para esse exemplo vamos listar todos os registros do mês de Setembro.
SQL> col begin_interval_time
for a30
SELECT snap_id, begin_interval_time
FROM SYS.WRM$_SNAPSHOT
WHERE instance_number = 1
AND begin_interval_time like '%SEP%'
order by 1;
/
SNAP_ID BEGIN_INTERVAL_TIME
----------
------------------------------
156971 27-SEP-13
12.00.29.580 AM
156972 27-SEP-13 12.10.31.001 AM
156973 27-SEP-13 12.20.31.381 AM
156974 27-SEP-13 12.30.31.722 AM
.
.
.
157543 30-SEP-13 11.20.24.685 PM
157544 30-SEP-13 11.30.27.979 PM
157545 30-SEP-13 11.40.28.395 PM
157546 30-SEP-13
11.50.34.756 PM
De posse das informações a serem expurgadas
(SNAP_ID), deve-se executar o passo abaixo:
SQL> execute dbms_workload_repository.drop_snapshot_range(low_snap_id
=> 156971, high_snap_id=>157546);
PL/SQL procedure successfully completed.
Para a execução da DBMS_WORKLOAD_REPOSITORY, deve-se
informar o intervalo inicial e final, em destaque no texto e apresentado na
relação (coluna SNAP_ID). Para esse exemplo a rotina irá remover as linhas
referentes ao mês de Setembro.
Após o expurgo, podemos verificar
agora que temos somente o mês de Outubro.
SQL> COL END_INTERVAL_TIME FOR
A30
SQL>
SQL> SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
2 FROM SYS.WRM$_SNAPSHOT
3 WHERE SNAP_ID = (SELECT MIN (SNAP_ID) FROM
SYS.WRM$_SNAPSHOT)
4 UNION
5 SELECT SNAP_ID,
BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
6 FROM SYS.WRM$_SNAPSHOT
7 WHERE SNAP_ID = (SELECT MAX (SNAP_ID) FROM
SYS.WRM$_SNAPSHOT)
8 ORDER BY 2
9 /
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ------------------------------ ------------------------------
157547 01-OCT-13 12.00.35.054 AM 01-OCT-13
12.10.38.520 AM
160075 18-OCT-13 01.20.39.554 PM 18-OCT-13
01.30.39.997 PM
Referências: Oracle®
Database Performance Tuning Guide 11gR2 (11.2)
Oracle®
Database Concepts 11gR2 (11.2)
MSc.
Rubens Oliveira
DBA Oracle Consultor