Skip to main content

Command Palette

Search for a command to run...

Hablemos sobre afinamiento

Updated
4 min readView as Markdown
J
Un apasionado de la base de datos y la educación. Crecemos en comunidad y la educación transforma vidas.

Level200

Se te hace conocido la frase la aplicación esta lenta o la base de datos esta lenta....pues déjame decirte que la lentitud no es el problema, es el síntoma, el desafío esta en determinar donde se presenta ese mayor tiempo de espera y porque, y esa búsqueda es el corazón del tuning,

Lo bueno es que basado en los años de experiencia Oracle ha diseñado una metodología para el afinamiento.

Podemos identificar los siguiente tópicos:

  • Planificación de la Performance

  • Afinamiento de instancia

  • Afinamiento de SQL

En esta nota abarcaremos el afinamiento de instancia, un detalle a tener en cuenta cuando hacemos este afinamiento es la diseño inicial sobre el cual se baso y también hay que mirar la memoria, requerimiento de i/o y el sistema operativo desde la mirada de la necesidad de la base de datos.

La optimización se basa en identificar los cuellos de botella mas significativo y realizar los cambios necesario para reducir o eliminar su efecto.

Para ayudarnos con esto tenemos los principios de Performance:

Linea Base

Consiste en contar con una base de referencia que podamos usar como punto de comparación si se presenta algún problema de performance. En si es conocer nuestra base de datos, por ejemplo se que mi base de datos normalmente tiene 1,000 sesiones y un promedio de 30 sesiones activas, por tanto si en algun momento tengo 50 sesiones activas eso no seria normar para mi base de datos y es un indicador que algo esta pasando.

Esta Línea base lo podemos aplicar con AWR, primero validamos si tenemos alguna línea base:

SELECT baseline_id, baseline_name, start_snap_id, end_snap_id, TO_CHAR(start_snap_time,'DD-MON-YYYY HH24:MI') start_time, TO_CHAR(end_snap_time,'DD-MON-YYYY HH24:MI') end_time, baseline_type, moving_window_size FROM dba_hist_baseline ORDER BY baseline_id;

Tenemos una línea base, con AWR podemos aplicar diferentes tipos de línea base:

  • Fixed Baseline: congela un rango de snapshot especifico, ejemplo cuando todo funciono bien.

  • Moving Window Baseline: existe una por defecto "SYSTEM_MOVING_WINDOW", el cual es la única que tenemos según query ejecutado, cubre la retención de AWR completa y se usa como referencia para adaptive thresholds.

  • Baseline Template: repite automáticamente la captura en un rango recurrente.

En esta blog vamos a crear un fixed baseline a partir de un snapshot existente, primero validamos el snapshot:

SELECT snap_id, TO_CHAR(begin_interval_time,'DD-MON-YYYY HH24:MI') begin_time, TO_CHAR(end_interval_time,'DD-MON-YYYY HH24:MI') end_time FROM dba_hist_snapshot WHERE begin_interval_time BETWEEN TO_DATE('15-07-2026 08:00','DD-MM-YYYY HH24:MI') AND TO_DATE('15-07-2026 10:00','DD-MM-YYYY HH24:MI') ORDER BY snap_id;

Ahora creamos el baseline:

BEGIN

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE( start_snap_id => 1082, end_snap_id => 1083,

baseline_name => 'BASELINE_ACE_OK', expiration => NULL );

END;

Validamos que exista la nueva linea base:

***AWR requiere licencia de Diagnostic Pack.

Sintomas y problemas

Un error común en la optimización es confundir los síntomas del problema con el problema en si, como por ejemplo:

Lentitud en i/o: generalmente esto puede ser causado por una mala configuración de discos, pero también puede ser causado por una innecesaria cantidad de lecturas físicas de I/O por SQL mal tuneados.

Cuando afinar?

Tenemos 2 momentos: Monitoreo Proactivo o Eliminación de cuello de botella.

El monitoreo proactivo revisa periódicamente estadísticas de rendimiento para detectar cambios en el comportamiento del sistema, sin necesariamente aplicar cambios salvo que se detecte un problema serio en curso.

La eliminación del cuello de botella consiste en identificar y corregir el recurso sobreutilizado (el cuello de botella) que causa el problema de rendimiento. El tuning idealmente forma parte de todo el ciclo de vida de la aplicación, pero suele volverse reactivo cuando se deja hasta producción. Las soluciones pueden aplicarse a nivel de aplicación, Oracle o hardware, siendo el cambio en la aplicación la vía más efectiva.

Este ha sido nuestro camino por los principios del afinamiento y en conclusión el afinamiento de instancia no es adivinar, es método: partir de una línea base sólida (AWR) para distinguir lo normal de lo anómalo, y no confundir el síntoma (lentitud) con la causa real, ya sea en monitoreo proactivo o ante un cuello de botella activo, la corrección debe apuntar al recurso realmente sobreutilizado y priorizar cambios en la aplicación antes que en Oracle o el hardware. Conocer tu base de datos es en el fondo la primera y más rentable herramienta de afinamiento.

4 views