Cómo Mejorar el Rendimiento Degradado en Oracle RAC: Análisis de Memoria y Eventos de Espera.

Search for a command to run...

No comments yet. Be the first to comment.
MAMP | La Botica del DBA – Análisis de Casos Clínicos

Oracle transforma 23ai en Oracle AI Database 26ai aplicando el Release Update 23.26.0. Resumen práctico y mini-checklist para DBAs.

👨⚕️ Estimad@ colega DBA, arquitect@ o entusiasta cloud:En esta edición te traemos una fórmula que está revolucionando las estrategias multicloud: Oracle@GCP, una alianza estratégica que permite correr bases de datos Oracle directamente desde Google...

Introducción ¿Borraste accidentalmente datos en una tabla crítica de producción y no tienes un punto de restauración inmediato? ¿No puedes usar Flashback por limitaciones de configuración o licenciamiento? Aquí es donde LogMiner puede convertirse en ...

Oracle ha lanzado oficialmente la disponibilidad general de Oracle Database 23ai el 2 de mayo de 2024, como una versión de soporte a largo plazo (Long-Term Support Release)Oracle Database 23ai, una versión que marca un antes y un después en la gestió...

ORA-4031, TNS-12637
En esta edición de La Botica del DBA, te comparto un caso real que involucró un entorno de producción crítico, alojado en Oracle Cloud Infrastructure (OCI), sobre infraestructura Exadata. El síntoma inicial era claro: lentitud progresiva, sesiones en espera, y errores intermitentes de conexión (TNS-12637) en múltiples instancias del clúster.
El problema escaló hasta transformarse en una degradación severa del rendimiento.
Uno de los focos del problema estaba relacionado con la secuencia ID_REG_RECETARIO.NEXTVAL. Con una configuración inicial de CACHE=10 y más de 26,000 ejecuciones, el diccionario de datos se actualizaba constantemente, generando:
row cache lock
buffer busy waits
enq: TX - index contention
Una sola instancia podía sostener la carga, pero al levantar la segunda del clúster, la presión de concurrencia creaba un efecto dominó.
ALTER SEQUENCE BOTICARIO.ID_REG_RECETARIO CACHE 1000;
Este simple cambio redujo de 1300 a solo 23 las escrituras en el diccionario de datos por cada 26K valores generados.
El siguiente síntoma fue el famoso y temido ORA-4031, con trazas que reportaban fallas al asignar memoria en los heaps de lectura/escritura de In-Memory Column Store (IMC). Las métricas mostraban una configuración deficiente de vm.nr_hugepages.
📌 El entorno requería más de 104K HugePages, pero el sistema operaba con mucho menos, generando:
Fragmentación de memoria
Presión durante el startup simultáneo de instancias
Fallos esporádicos de conectividad
🧪 Diagnóstico confirmado:
grep Hugepagesize /proc/meminfo
# Resultado: 2048 kB
🧾 Herramienta recomendada:
hugepages_settings.sh (Doc ID 401749.1)
💊 Tratamiento sugerido:
Calcular vm.nr_hugepages adecuadamente
Aplicar el cambio en una ventana de mantenimiento programada con reinicio
El análisis de los reportes AWR confirmó una sobrecarga significativa en la tabla AUD$, reflejada en esperas críticas que impactaban el rendimiento global del clúster:
| Evento de Espera | % del DB Time |
buffer busy waits | 58.1% |
gc buffer busy acquire | 31.6% |
enq: HW - contention | 7.6% |
La causa principal fue una operación de inserción masiva y continua sobre la tabla AUD$, en un entorno donde:
La auditoría no estaba particionada
No se aplicaban técnicas de retención ni purga automatizada
El diseño no estaba optimizado para alto volumen de concurrencia
🔍 Este patrón es más común de lo que parece y puede llevar a síntomas graves de contención en entornos RAC.
📖 ¿Te interesa profundizar en este caso específico?
Consulta el artículo detallado:
➡️ Análisis postmortem con AWR: el caso de la AUD$ desbordada
Pequeñas dosis de ajuste, gran alivio.
Este caso nos recuerda que los problemas de rendimiento en Oracle RAC no siempre vienen de grandes bugs. A veces, una secuencia sin cachear o una mala configuración de memoria puede detener un entorno entero.
Cachea tus secuencias — especialmente si son muy invocadas
Calcula y configura adecuadamente HugePages
Monitorea AWR y los Top Events de forma proactiva
Evita que AUD$ se convierta en un cuello de botella
Haz pruebas de carga con múltiples instancias activas
Suscríbete a La Botica del DBA para recibir más casos reales, scripts útiles y aprendizajes prácticos desde el quirófano de producción.
📥 Escríbeme a: admin@laboticadeldba.com