Saltar al contenido
DBAExperts
Oracle Diagnóstico

Cómo encontrar consultas lentas en Oracle con AWR y v$sql

Antes de optimizar necesitas saber qué consulta consume los recursos. Oracle guarda esa información; solo hay que leerla bien.

  1. 1

    Encuentra el SQL más costoso en memoria

    v$sql muestra consultas activas o recientes ordenadas por tiempo transcurrido o lecturas.

    SELECT sql_id, elapsed_time/1e6 seg, executions, buffer_gets, sql_text
    FROM v$sql
    ORDER BY elapsed_time DESC
    FETCH FIRST 20 ROWS ONLY;
  2. 2

    Genera un reporte AWR

    AWR compara dos snapshots y resume los eventos de espera y el Top SQL del periodo. Requiere licencia Diagnostics Pack.

    SQL> @?/rdbms/admin/awrrpt.sql
  3. 3

    Revisa el plan real de un SQL

    Usa el SQL_ID para ver el plan que Oracle ejecutó, no solo el estimado.

    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('a1b2c3d4e5f6g', NULL, 'ALLSTATS LAST'));
  4. 4

    Estima con EXPLAIN PLAN

    Para una consulta que aún no corre, revisa el plan estimado y busca full scans inesperados.

    EXPLAIN PLAN FOR
    SELECT * FROM pedidos WHERE fecha > SYSDATE - 30;
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

// el error común

Optimizar por el tiempo total sin dividir entre ejecuciones engaña: una consulta que corre un millón de veces puede pesar más que una lenta que corre una vez.

// cuándo conviene un experto

Si el sistema va lento y no logras aislar la causa, o el plan cambia sin razón aparente, conviene un diagnóstico dirigido. En dba.mx hacemos tuning de SQL con techo cerrado.

Agenda un Escaneo — desde USD $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.