Las esperas de la clase Configuration vienen de un límite de la instancia o del objeto: redo log pequeño, buffer cache, caché de la secuencia, espacio de transacción en el bloque. El evento dice qué límite se alcanzó, y la corrección suele ser de configuración, no de SQL.
Síntomas
En el Diagnóstico aparece el hallazgo Espera ligada a la configuración de la base de datos (CONFIGURACAO). El texto dice cuánto del tiempo total quedó en la clase de espera Configuration, en porcentaje y en segundos, lista los eventos de la clase que pesaron, recuerda qué revisar (redo logs, buffer cache, caché de las secuencias) y termina con Ver perfil por clase.
El hallazgo aparece cuando la clase Configuration pesa en el tiempo total. La gravedad es siempre media, cualquiera que sea el porcentaje. Un evento que el informe no clasifica aparece en el perfil como No clasificado y no cuenta aquí.
Causa
Cada evento de la clase apunta a un límite diferente. Las esperas de cambio de redo log detienen a toda sesión que genera redo, no solo a la del trace.
| Evento | Qué pasó | Qué revisar |
|---|---|---|
log file switch completion | La sesión esperó el cambio del archivo de redo log. | Tamaño de los redo logs: cambios frecuentes. |
log file switch (checkpoint incomplete) | El siguiente redo log aún tenía bloques que el checkpoint no había escrito. | Número y tamaño de los grupos de redo log. |
log file switch (archiving needed) | El siguiente redo log aún no se había archivado. | Archivado detenido o destino lleno. |
log file switch (private strand flush incomplete) | El cambio esperó a que el redo privado de las transacciones abiertas pasara al log buffer. | Frecuencia de los cambios de redo log. |
log buffer space | Faltó espacio en el log buffer para el redo. | Tamaño del log buffer y velocidad del LGWR. |
free buffer waits, write complete waits | Faltó un buffer libre en la caché, o el DBWR estaba escribiendo el bloque. | Buffer cache, DBWR y escritura en el almacenamiento. |
enq: SQ - contention | Sesiones esperando a que la secuencia renueve la caché en el diccionario. | CACHE de la secuencia. |
enq: HW - contention | Varias sesiones asignando espacio por encima de la marca de agua (HWM) del mismo segmento. | Inserciones concurrentes en una tabla o LOB que crece rápido. |
enq: TX - allocate ITL entry | El bloque no tenía una entrada de transacción (ITL) libre para una transacción más. | INITRANS y PCTFREE del objeto. |
undo segment extension | El segmento de undo tuvo que crecer durante la operación. | Tamaño y crecimiento del tablespace de undo. |
enq: ST - contention | Contención por la asignación de espacio. | Tablespace gestionado por el diccionario. |
Solución
Busque en la tabla de la causa el evento que el hallazgo lista primero. Los casos van del más al menos común.
Redo log pequeño o con pocos grupos
Revise el tamaño y el estado de los grupos, y cuántos cambios hubo por hora en las últimas 24 horas:
select thread#, group#, bytes / 1024 / 1024 as mb, members, status, archived
from v$log
order by thread#, group#;
select trunc(first_time, 'HH24') as hora, thread#, count(*) as trocas
from v$log_history
where first_time > sysdate - 1
group by trunc(first_time, 'HH24'), thread#
order by hora, thread#;
Muchos cambios por hora piden redo logs más grandes; checkpoint incomplete pide también más grupos. Cree los grupos nuevos y elimine los pequeños cuando queden INACTIVE, como describe la documentación de Oracle sobre el redo log. Con archiving needed, compruebe el destino del archivado antes de tocar los grupos.
Secuencia y espacio de transacción en el bloque
Para enq: SQ - contention, aumente la caché de la secuencia; en RAC, prefiera también noorder:
alter sequence exemplo.pedido_seq cache 1000;
Para enq: TX - allocate ITL entry, aumente el INITRANS del objeto que aparece en Objetos con más tiempo de espera. El valor nuevo vale para bloques nuevos; los bloques que ya existen solo cambian cuando la tabla se mueve (alter table ... move; sin update indexes, los índices quedan UNUSABLE y hay que reconstruirlos) o el índice se reconstruye:
alter table exemplo.pedido initrans 10;
alter index exemplo.pedido_pk rebuild initrans 10;
Buffer cache, DBWR y log buffer
free buffer waits y write complete waits apuntan al DBWR, que no escribe los bloques modificados con la rapidez necesaria: revise la escritura en el almacenamiento y el tamaño del buffer cache. log buffer space apunta a un log buffer pequeño o a un LGWR lento frente a mucho redo. Son ajustes de la instancia: lleve al DBA el perfil y el Período del trace.
Espacio y undo
enq: HW - contention: varias sesiones insertando en un segmento que crece. Asignar extensiones antes de la carga ayuda (alter table exemplo.pedido allocate extent;).undo segment extension: el undo crece durante la operación. Revise el tamaño y el autoextend del tablespace de undo.enq: ST - contention: aparece con un tablespace gestionado por el diccionario. Prefiera tablespaces gestionados localmente.
Cómo confirmar
Estos eventos dependen de la carga de toda la instancia, como el redo que generan todas las sesiones. Mida de nuevo en el mismo horario y con una carga parecida.
- Aplique el ajuste del evento que pesaba.
- Active el trace de la misma operación con esperas (activar el trace con DBMS_MONITOR).
- Envíe el archivo nuevo y abra el informe.
- Compare la fila Configuration en Por clase de espera y la fila del evento en el perfil.
Resultado: la clase Configuration deja de pesar en el tiempo total y el hallazgo desaparece del Diagnóstico. En el perfil, el evento ajustado baja en Ocurrencias o en Media (s).
En el informe
El informe de ejemplo no tiene esperas de la clase Configuration; los enlaces abren las mismas secciones en él.
- Diagnóstico: el hallazgo, con el enlace Ver perfil por clase.
- Por clase de espera: la fila Configuration, con los eventos en Componentes principales. La tarjeta de la clase se abre al hacer clic en su nombre (clases de espera).
- Perfil del tiempo de respuesta: cada evento, con Ocurrencias y Media (s). La tarjeta de cada evento dice cuándo es normal y cuándo preocupa (perfil).
- Objetos con más tiempo de espera: la tabla o el índice de
enq: TX - allocate ITL entryy deenq: HW - contention(objetos). - Sentencias principales por componente y por clase: las sentencias que esperaron, como las que generan redo o usan la secuencia (sentencias por componente).
- Resumen: el Período del trace, para cruzarlo con la hora de los cambios de redo log en
v$log_history(resumen).