Profundizando un poco más sobre la causa de este evento, su
origen y su impacto, pude allanar bastante el camino hacia la resolución del
caso.
El reporte mostraba los siguientes indicadores:
"Buffer Exterminate" es un evento de espera que ocurre cuando en una base de datos configurada
en modo "Automatic Memory Management" (AMM), el tamaño de un componente de la SGA
cambia dinámicamente, como por ejemplo el “data buffer cache”, en este caso el proceso MMON realiza un shrink del “data buffer cache” o re-asigna RAM a otra región de la SGA.
La espera "buffer exterminate" ocurre si parte del
buffer cache se reduce de forma dinámica y una sesión requiere acceder a un bloque
de datos dentro del mismo, ubicado en alguno de los gránulos elegidos para
liberarse. La sesión entonces queda en espera hasta resolverse el evento.
Una vez liberado el buffer (l“buffer cache hash chain”, “LRU
chain”, etc), las sesiones que se encuentran en “espera” pueden sin problema
volver a subir ese bloque a memoria, en alguno de los gránulos restantes en el
data buffer cache, y eventualmente cualquier otro proceso podrá encontrar la nueva dirección del búfer para ese bloque utilizando
el hash para su búsqueda.
Existen varias vistas que podemos utilizar para verificar si
se han realizado operaciones de redimensionamiento de componentes de la SGA:
V$SGA_DYNAMIC_COMPONENTS: muestra información sobre los
componentes SGA dinámicos. Esta vista resume la información basada en todas las
operaciones de cambio de tamaño SGA completadas desde el inicio de la
instancia.
V$SGA_CURRENT_RESIZE_OPS: muestra información sobre las
operaciones de cambio de tamaño SGA que están actualmente en progreso. Una
operación puede ser un crecimiento o una reducción de un componente SGA
dinámico.
V$SGA_DYNAMIC_FREE_MEMORY: muestra información sobre la
cantidad de memoria SGA disponible para futuras operaciones dinámicas de cambio
de tamaño SGA
En este ejemplo, podemos ver como que el día 10/6 en el cual
se detectó la baja performance y se realizó el análisis, ocurrió un GROW de la “shared
pool” y SHRINK del “DEAFULT buffer cache” en el mismo horario y coincidente con
la ocurrencia del evento de espera "Buffer Exterminate".
SQL>
select component, current_size, min_size, max_size, oper_count, last_oper_type,
last_oper_time
from v$sga_dynamic_components;
COMPONENT CURRENT_SIZE MIN_SIZE
MAX_SIZE OPER_COUNT LAST_OPER_TYPE LAST_OPER_TIME
------------------------------
------------ ---------- ---------- ---------- -------------- --------------
shared
pool 3489660928
1308622848 3724541952 79 GROW 10/6/2018 15:0
large
pool
234881024 234881024 436207616 1 SHRINK 29/1/2018 05:2
java
pool
33554432 33554432 201326592 5 SHRINK 20/2/2018 22:1
streams
pool 33554432 0
67108864 5 SHRINK 18/4/2018 22:0
DEFAULT
buffer cache 4563402752
4294967296 6375342080 89
SHRINK 10/6/2018 15:0
KEEP
buffer cache
0 0 0 0 STATIC
RECYCLE
buffer cache 0 0 0 0 STATIC
DEFAULT
2K buffer cache 0 0 0 0 STATIC
DEFAULT
4K buffer cache 0 0 0 0 STATIC
DEFAULT
8K buffer cache 0 0 0 0 STATIC
DEFAULT
16K buffer cache 0 0 0 0 STATIC
DEFAULT
32K buffer cache 0 0 0 0 STATIC
Shared
IO Pool 0 0 0 0 STATIC
ASM
Buffer Cache 0 0 0 0 STATIC
14
rows selected
Espero les resulte de utilidad.
No hay comentarios:
Publicar un comentario