¿Vas a aplicar cambios en Oracle? Mide antes de lamentar. 

Una de las muchas herramientas de Oracle y que seguramente conoces es: SQL Performance Analyzer (SPA), nos permite simular cómo los cambios en la base de datos afectarán al rendimiento de las queries. Query Performance, bastante menos conocido, también hace esto.

Hemos analizado SPA a fondo y entendemos sus ventajas y limitaciones: es muy potente para entornos Oracle Enterprise Edition con el Tuning Pack; permite comparar el rendimiento antes y después de un cambio y genera informes detallados.

Vamos a explicaros entonces qué es y cómo funciona SPA.

¿Qué es SQL Performance Analyzer?

SPA es una herramienta de Oracle incluida en el Oracle Tuning Pack que simula el impacto de cambios técnicos en tus consultas SQL.

SPA permite ejecutar un conjunto de queries antes y después de aplicar un cambio y generar un informe detallado que compara:

  • Tiempos estimados de ejecución
  • Planes de ejecución
  • Recursos consumidos

Esto permite detectar regresiones de rendimiento y tomar decisiones informadas.

Cambios que se pueden analizar con SPA

  • Recolección de estadísticas (DBMS_STATS)
  • Ajustes de parámetros del optimizador
  • Upgrade de versión (12c → 19c → 23c)
  • Nuevos índices o particiones

SPA permite comparar la ejecución antes y después del cambio, basándose en datos reales, evitando sorpresas.

El resultado es un reporte HTML detallado, ideal para entornos críticos y auditorías.

El rol del SQL Tuning Set (STS)

El STS es donde cargamos las queries que queremos analizar. SPA no trabaja con consultas sueltas: se conecta directamente al STS y ejecuta todas las queries simulando el impacto del cambio.

Cómo se crea un task SPA desde un STS

DBMS_SQLPA.CREATE_ANALYSIS_TASK(

  sqlset_name => ‘NOMBRE_DEL_STS’,

  task_name => ‘nombre_del_task’);

Desde ese momento, SPA ejecutará todas las queries del STS para medir su rendimiento antes y después del cambio.

Cómo cargar queries en el STS

Desde el cursor cache (consultas recientes)

DECLARE

  cur DBMS_SQLTUNE.SQLSET_CURSOR;

BEGIN

  OPEN cur FOR

    SELECT VALUE(p)

    FROM TABLE(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(

      basic_filter => ‘sql_text LIKE »%VENTAS%»’,

      result_limit => 20)) p;

  DBMS_SQLTUNE.LOAD_SQLSET(

    sqlset_name => ‘STS_VENTAS’,

    populate_cursor => cur);

END;

/

Desde el AWR (requiere Tuning Pack)

DECLARE

  cur DBMS_SQLTUNE.SQLSET_CURSOR;

BEGIN

  OPEN cur FOR

    SELECT VALUE(p)

    FROM TABLE(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(

      begin_snap => 101,

      end_snap => 102,

      basic_filter => ‘sql_text LIKE »%VENTAS%»’,

      result_limit => 30)) p;

  DBMS_SQLTUNE.LOAD_SQLSET(

    sqlset_name => ‘STS_VENTAS’,

    populate_cursor => cur);

END;

/

Manualmente, agregando queries específicas

DECLARE

  sql_stmt DBMS_SQLTUNE.SQLSET_ROW;

BEGIN

  sql_stmt.sql_text := ‘SELECT * FROM VENTAS WHERE FECHA >= SYSDATE – 30’;

  sql_stmt.parsing_schema_name := ‘COMERCIAL’;

  DBMS_SQLTUNE.LOAD_SQLSET(

    sqlset_name => ‘STS_VENTAS’,

    sqlset_rows => DBMS_SQLTUNE.SQLSET_ROWS(sql_stmt));

END;

/

Resumen

SPA es una herramienta muy potente que permite anticiparse a problemas de rendimiento.

Su uso se basa en una lógica clara: defines las queries a analizar (STS), haces dos ejecuciones (antes y después del cambio), y comparas resultados para tomar decisiones informadas.

SPA frente a otras soluciones: ¿cuándo conviene usarlo?

SPA es ideal si trabajas exclusivamente con Oracle Enterprise Edition y necesitas validar cambios críticos. Sin embargo, no siempre es la opción más práctica:

  • Requiere licencia del Oracle Tuning Pack, con coste significativo.
  • Solo funciona en Oracle.
  • Su uso está pensado para entornos grandes y dedicados a tuning.

Nuestra propuesta: Query Performance

En GPSOS, como administradores de bases de datos de distintos clientes, necesitamos analizar y comparar consultas no solo en Oracle, sino también en SQL Server y PostgreSQL. Aquí, QP amplia su espectro de motores para analizar y comparar queries en más entornos.

Query Performance nos permite:

  • Analizar y comparar el rendimiento de consultas en diferentes entornos.
  • Detectar degradaciones antes de aplicar cambios o actualizaciones.
  • Generar informes claros y comparativos, listos para presentar al cliente.

En la práctica, nos aporta la misma ventaja que SPA —anticipar problemas de rendimiento— pero con mayor flexibilidad, multiplataforma, ofreciendo informes formateados y personalizables y con un coste mucho más reducido.

Si quieres conocer nuestra herramienta, no dudes en contactar con nosotros. Te dejamos también el link a la página de Query Performance.

Si además quieres que estos cambios los hagamos nosotros, puedes preguntarnos por nuestro servicio de consultoría Oracle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *