1. Documentación en Tahiti -> Oracle Database, 11g Release 2 (11.2) -> Masters Book List -> Performance Tuning Guide -> 5 Automatic Performance Statistics -> Managing the Automatic Workload Repository
2. Los Baseline, generalmente infrautilizados en entornos productivos, contiene información relevante sobre el rendimiento de la BD en un intervalo de tiempo. Se crean sobre dos Snapshots de AWR y contienen toda la información que existe en el repositorio AWR entre dichos Snapshots. El propósito de esta herramienta es definir un comportamiento de referencia para hacer comparaciones en el futuro y ayudar a determinar las posibles causas de caidas o problemas de rendimiento del sistema.
Existe tres tipos de Baseline: Fixed Baseline, Moving Window Baseline y Baseline Templates. Este objetivo cubre sólo la creación de plantillas para Baseline (Baseline Templates), pero vamos a dar un repaso a los tres.
Los baselines fijos (Fixed Baseline) se corresponden con un periodo determinado en el pasado que nosotros especifiquemos.
«Moving Windows Baseline» se corresponde con todos los AWR que existan el periodo de retención del repositorio AWR. Se utiliza para definir umbrales adaptables (Adaptive Thresholds) basados en el comportamiento general de la BD para generar alertas cuando se produzca situaciones anómalas. Se recomienda subir la retención a 30 días como mínimo cuando se utilizan estos umbrales.
Las plantillas Baseline se utilizan para programar la creación de Baseline en el futuro. Puede ser una plantilla puntual para la generación de un único Baseline o una plantilla repetitiva que capture Baseline con una frecuencia determinada.
3. Vamos a ver como se crea un «Fixed Baseline» con el paquete DBMS_WORKLOAD_REPOSITORY.
-- Buscamos los dos últimos Snapshots AWR del sistema SELECT MAX(SNAP_ID) FROM DBA_HIST_SNAPSHOT; -- Generamos un Baseline entre los dos últimos Snaphosts obtenidos -- Si no especificamos EXPIRATION entonces la retención es infinita BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (START_SNAP_ID => 2165, END_SNAP_ID => 2166, BASELINE_NAME => 'BASELINE_TEST', EXPIRATION => 30); END; / -- Los Baseline que hemos creado se pueden consultar en DBA_HIST_BASELINE SELECT * FROM DBA_HIST_BASELINE;
4. La creación de una plantilla Baseline es muy sencillo. Para ello utilizamos el método CREATE_BASELINE_TEMPLATE.
-- Creamos una plantilla para generar un único Baseline entre la próxima hora y 2 horas después BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE ( START_TIME => SYSDATE+1/24, END_TIME => SYSDATE+2/24, BASELINE_NAME => 'BASELINE_TEST_SINGLE', TEMPLATE_NAME => 'TEMPLATE_TEST', EXPIRATION => 7); END; / -- Para programar la generación repetitiva de Baseline usamos el mismo procedimiento -- Se realizará un Baseline todos los lunes por el periodo que cubre enter las 09 y las 15h -- Se seguirá haciendo durante 30 días, y cada Baseline tendrá una retención de 15 días BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE ( DAY_OF_WEEK => 'MONDAY', HOUR_IN_DAY => 9, DURATION => 4, EXPIRATION => 15, START_TIME => SYSDATE, END_TIME => SYSDATE+30, BASELINE_NAME_PREFIX => 'BASELINE_TEST_REP_', TEMPLATE_NAME => 'TEMPLATE_TEST_REP'); END; / -- La información de las plantillas se puede consultar en DBA_HIST_BASELINE_TEMPLATE SELECT * FROM DBA_HIST_BASELINE_TEMPLATE;
5. Reproducir estos ejercicios con OEM es muy fácil. La configuración de Baselines se encuentra en la pestaña «Server» en la sección «Statistics Management». Desde aquí podemos crear Baseline con o sin plantilla y generar informes comparativos de rendimiento.
Ya hemos generado un Baseline de nombre «BASELINE_TEST». Vamos a comparar ese periodo con otro par de Snapshots en el pasado.
Click «Server» ->
-> Click «Automatic Workload Repository» ->
-> Click «Run Compare Periods Report» ->
-> En la sección «First Period» introducimos el nombre de nuestro Baseline = «BASELINE_TEST» ->
-> En la sección «Second Period» seleccionamos «By Snapshot» ->
-> Utilizando el icono de Linterna buscamos dos Snapshots ->
-> Ej. Begin Snaphot = 2154 ->
-> Ej. End Snapshot = 2155 ->
-> Click «Generate Report» ->
-> Podemos comparar las diferencia de rendimiento entre los dos periodos
Esto resulta muy interesante para comparar un periodo «normal» de rendimiento de nuestro sistema con uno «problemático». Comparando las estadísticas podemos identificar con mayor rápidez el origen del problema.