AWR es una herramienta desarrollada por Oracle he incluida a partir de Oracle 10g que nos permite extraer informes del estado de nuestra base de datos para poder realizar tareas de Tuning, esta herramienta es una evolución de Oracle StatsPack que estaba incluida en Oracle 9i.
El AWR realiza la recolección de datos estadísticos y de rendimiento de una base de datos Oracle que incluye:
- Eventos Wait usados para identificar problemas de rendimiento.
- Estadísticas de System y sesiones.
- Estadísticas de uso de objetos.
- Estadísticas de estamentos SQL, Select, Insert, etc.
Los Snapshots.
Por defecto Oracle AWR realiza la recolección de datos cada hora con una retención de 7 días, si deseamos variar esta configuración podemos cambiarla usando:
En este ejemplo cambio la retención a 15 días y a intervalos de 15 minutos.
BEGIN
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(
retention => 21600, -- Minutos.
interval => 15); -- Minutos.
END;
/
Para volver a la situación por defecto ejecuto DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings con los valores para 7 días de retención y 1 hora para el intervalo.
BEGIN
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings( retention => 10080, interval => 60);
END;
/
Una vez realizada la modificación puedes comprobar como quedan los cambios consultando la tabla DBA_HIST_WR_CONTROL.
Ejemplo:
SET LINESIZE 200
COLUMN SNAP_INTERVAL FORMAT A30
COLUMN RETENTION FORMAT A30
SELECT * FROM DBA_HIST_WR_CONTROL;
Resultado:
SQL> SET LINESIZE 200
SQL> COLUMN SNAP_INTERVAL FORMAT A30
SQL> COLUMN RETENTION FORMAT A30
SQL> SELECT * FROM DBA_HIST_WR_CONTROL;
DB Id SNAP_INTERVAL RETENTION TOPNSQL
----------- ------------------------------ ------------------------------ ----------
2390722876 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
La recolección automática en AWR solo es posible si el parámetro STATISTICS_LEVEL esta inicializado a TYPICAL (por defecto) o CALL, si el valor de este parámetro es BASIC lanzar Snapshop de forma manual pero perderemos algunas estadísticas.
Para lanzar un Snapshop de forma manual ejecutaremos lo siguiente:
EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot;
Si queremos borrar un Snapshop ejecutaremos:
BEGIN
DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range (
low_snap_id => 22, -- Snapshop más bajo
high_snap_id => 32); -- Snapshop más alto
END;
/
Oracle AWR provee dos scripts SQL que producen informes del repositorio AWR, son awrrpt.sql y awrrpti.sql, ambos ofrecen la posibilidad de que el informe se genere en formato de texto o en formato HTML, los dos dan básicamente la misma información pero el awrrpti.sql te permite sacar el informe de una única instancia.
Los informes lo podemos generar de la siguiente manera:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
@$ORACLE_HOME/rdbms/admin/awrrpti.sql
Una vez ejecutéis el script os pedirá el tipo de informe, texto o HTML, aparecerá un lista de los shapshop disponibles, seleccionas los que os interese y se generará el informe AWR con el nombre de fichero que hayáis definido.
Ejemplos de informe AWR tanto en formato de texto como en formato HTML (solo es una pequeña porción del informe):
AWR en formato de texto
WORKLOAD REPOSITORY report for
DB Name DB Id Instance Inst Num Release RAC Host
------------ ----------- ------------ -------- ----------- --- ------------
PRUEBA01 3803074214 PRUEBA01 1 10.2.0.1.0 NO lce4s002v
Snap Id Snap Time Sessions Curs/Sess
--------- ------------------- -------- ---------
Begin Snap: 14 10-Oct-11 03:00:51 18 1.8
End Snap: 15 10-Oct-11 04:00:58 17 1.9
Elapsed: 60.12 (mins)
DB Time: 0.00 (mins)
Cache Sizes
~~~~~~~~~~~ Begin End
---------- ----------
Buffer Cache: 276M 276M Std Block Size: 8K
Shared Pool Size: 108M 108M Log Buffer: 7,000K
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
Redo size: 158.91 71,655.00
Logical reads: 2.43 1,094.25
Block changes: 0.48 216.50
Physical reads: 0.00 0.75
Physical writes: 0.10 46.88
User calls: 0.00 1.25
Parses: 0.15 67.00
Hard parses: 0.01 3.38
Sorts: 0.36 161.63
Logons: 0.00 0.38
Executes: 0.81 364.63
Transactions: 0.00
% Blocks changed per Read: 19.79 Recursive Call %: 99.96
Rollback per transaction %: 0.00 Rows per Sort: 8.90
AWR en formato HTML