Cómo leer un informe AWR en Oracle

Cuando una base de datos Oracle se ralentiza, el primer lugar donde un DBA debe mirar es el Informe AWR - una instantánea detallada de lo que ocurre dentro del sistema.

Revela dónde se invierte el tiempo, qué consultas consumen recursos y si la base de datos goza de buena salud o tiene problemas.

En este artículo, repasaremos las secciones clave que hay que comprobar para saber rápidamente si la base de datos funciona bien y dónde hay que centrar los esfuerzos de ajuste.

A continuación se muestra el orden que yo (y la mayoría de los DBA senior) seguimos al analizar un informe AWR:


🔎 Análisis AWR: Lista de comprobación paso a paso

1. 📊 Resumen del informe (sección superior)

Esto le da una resumen rápido de la salud de la base de datos.

  • Tiempo de BD frente a tiempo transcurrido
    • Muestra el tiempo total dedicado a la actividad de la base de datos.
    • 🔍 Si DB Tiempo ≈ Tiempo transcurrido × #CPU núcleosLa carga de la base de datos es pesada.
    • Regla de oro:
      • Saludable: El tiempo de BD por segundo es similar al número de CPU (por ejemplo, ~8 s/s para 8 CPU)
      • Malo: Un → mucho más alto indica cuellos de botella.
  • Sesiones activas medias (AAS)
    • Tiempo DB / Tiempo transcurrido
    • Saludable: AAS ≤ número de núcleos de CPU.
    • Malo: AAS > CPUs → el sistema está CPU-bound o esperando algo.
  • %DB CPU
    • Porcentaje de tiempo de la BD dedicado a la CPU.
    • ✅ 60-90% significa que la mayor parte del tiempo se dedica a hacer un trabajo útil.
    • ❌ Demasiado bajo → mayor tiempo de espera (IO, bloqueos, latches, etc.).

2. ⚙️ Perfil de carga

Esto le indica lo "ocupada" que está su base de datos.

  • Llamadas a BD / Transacciones / Ejecuciones por segundo - Da idea de la carga de trabajo.
  • Tamaño de repetición por segundo - Alto redo = DML pesado.
  • Lecturas lógicas por segundo - Refleja la actividad de la caché del búfer.
  • Lecturas físicas por segundo - Los valores altos pueden significar un almacenamiento en caché deficiente o exploraciones completas.
  • Análisis por segundo - Demasiados parses = mala compartición del cursor (busque % alto de parses duros).

Signos saludables:

  • Baja tasa de análisis sintáctico (<5%)
  • Lecturas lógicas >> lecturas físicas
  • Análisis por ejecución < 0,1 (lo que significa que la mayoría de las sentencias se reutilizan)

3. 🔥 Los 5 principales eventos en primer plano cronometrados

Esto es el corazón del análisis AWR.

  • Muestra dónde se pasa la mayor parte del tiempo de la base de datos.
  • Busque los principales eventos de espera y compruebe su naturaleza:
Tipo de eventoSignificadoQué pensar
Tiempo de CPUBuena señal si topLa base de datos está limitada por la CPU (compruebe el AAS y la CPU)
archivo db lectura secuencialE/S de un solo bloque (búsqueda de índices)OK si es bajo, pero alto → E/S lenta o acceso excesivo al índice.
archivo db lectura dispersaEscaneado completo de tablasPosibles índices que faltan
sincronización de archivos de registroCompromete esperasConfirmar con demasiada frecuencia o redo lento I/O
enq: TX - contención de bloqueo de filaContención de bloqueoProblemas de concurrencia de aplicaciones
latch: cadenas de memorias cachéContención de bloques en calienteAjuste de la caché o las consultas
buffer ocupado esperaContención por bloquesPosiblemente un problema de almacenamiento o de patrón de acceso a los datos

Saludable:

  • Tiempo de CPU en la cima o cerca de ella
  • Los eventos de espera son bajos en tiempo total (<20% tiempo total BD)

Malo:

  • Las esperas sin CPU dominan
  • Un evento de espera utiliza >30-40% de tiempo de BD → investigar la causa raíz.

4. 🧠 Porcentajes de eficiencia de las instancias

Esta sección suele malinterpretarse, pero algunas métricas clave son útiles:

  • Buffer Hit %: Debería ser > 90%
  • Biblioteca Hit %: Debería ser > 95%
  • Soft Parse %: > 95% (si es bajo → compruebe el pool compartido o el cursor compartido)
  • Picaporte Hit %: > 99%

Se trata de directrices generales: unos números malos significan un uso ineficiente de la memoria o problemas de reutilización de SQL.


5. Las mejores sentencias SQL

Compruebe el Top SQL por:

  • Tiempo transcurrido
  • Tiempo de CPU
  • Buffer recibe
  • Lecturas físicas
  • Ejecuciones

✅ Saludable:

  • Ningún SQL domina >30-40% del tiempo de BD.

❌ Problema:

  • Una o dos sentencias SQL consumen la mayoría de los recursos → centrarse primero en afinar aquí.

6. 🧰 Estadísticas de E/S y archivos

Consulte Espacio de tablas IO, Archivo IOy Segmentos por lecturas físicas:

  • Busque desequilibrios: un archivo de datos o tablespace haciendo 90% de IO → posible hotspot.
  • Tiempos de lectura elevados (ms por lectura > 10 ms) → El subsistema IO es lento.

7. 🧵 Desglose de la clase de espera

Esto ofrece una visión de alto nivel de hacia dónde va el tiempo:

  • CPU + E/S de usuario: Normalmente OK (carga de trabajo normal)
  • Concurrencia, Compromiso, Configuración: Posible ajuste necesario
  • Sistema E/S o Red: Posibles problemas de infraestructura

✅ Saludable:

  • La mayor parte del tiempo se pasa en la CPU o en E/S de usuario.

❌ Malo:

  • Porcentajes elevados en las clases de espera de Concurrencia, Compromiso o Configuración.

8. 📈 Estadísticas del SO

Compruebe la utilización de la CPU y la cola de ejecución:

  • %Usuario + %Sys CPU < 90% → CPU OK
  • Si Cola de ejecución > #CPUs → Saturación de la CPU

Comprueba también el uso de memoria y swap.


✅ Lista de comprobación rápida de salud final (atajo de DBA)

ConsulteBuena señalMala señal
DB Tiempo / seg≈ Núcleos de CPU>> núcleos de CPU
AAS≤ Núcleos de CPU>> núcleos de CPU
CPU time top eventNo
Tasa de éxito del búfer> 90%< 85%
Ratio de análisis sintáctico> 95%< 80%
Top SQLEquilibrado1-2 SQL dominan
Latencia de lectura IO< 10 ms> 20 ms
Clases de esperaPrincipalmente CPU/Usuario E/SConcurrencia, Commit, Config alta
Análisis sintáctico %< 5%> 10%

En resumen:
Una base de datos es haciendo bien si:

  • El tiempo de BD y el AAS están alineados con la capacidad de la CPU.
  • La CPU es la principal "espera".
  • No predomina ningún evento SQL o de espera.
  • Los porcentajes de aciertos son altos y los de análisis sintáctico, bajos.
  • La latencia y la contención son mínimas.

Deja una respuesta

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