Analizar los wait events de todo el clúster (gc waits) por instancia con GV$
OracleRAC y GridComando
-- Cluster-class waits per instance (since startup):
SELECT inst_id, event, total_waits,
ROUND(time_waited_micro/1e6) AS time_waited_s,
ROUND(time_waited_micro/NULLIF(total_waits,0)/1000, 2) AS avg_ms
FROM gv$system_event
WHERE wait_class = 'Cluster'
ORDER BY time_waited_micro DESC
FETCH FIRST 15 ROWS ONLY;
-- Sessions waiting right now, by instance and event:
SELECT inst_id, event, COUNT(*) AS sessions
FROM gv$session
WHERE wait_class <> 'Idle' AND state = 'WAITING'
GROUP BY inst_id, event
ORDER BY sessions DESC;
-- ASH for the last 15 minutes: which instance is waiting on gc
SELECT inst_id, event, COUNT(*) AS samples
FROM gv$active_session_history
WHERE sample_time > SYSTIMESTAMP - INTERVAL '15' MINUTE
AND wait_class = 'Cluster'
GROUP BY inst_id, event
ORDER BY samples DESC
FETCH FIRST 10 ROWS ONLY;Qué hace
Usa las vistas GV$ para mostrar en una sola consulta las esperas de clase Cluster (gc cr/current block 2-way/3-way, gc buffer busy, gc cr request) y su latencia media en todas las instancias.
Cuándo usarlo
Cuando los usuarios reportan lentitud en RAC, para saber si el problema viene del interconnect/global cache y en qué instancia se concentra.
Precaución
gv$active_session_history requiere la licencia de Diagnostics Pack. Si avg_ms supera unos pocos ms, revise primero el interconnect (MTU, pérdida de paquetes, netstat -s) y la CPU de LMS; gc buffer busy suele apuntar a un bloque caliente de la aplicación (secuencia, índice de lado derecho).
Relacionado
- Comprobar el estado de la base de datos, instancias y servicios RAC con srvctl
- Detener / iniciar una base de datos RAC o una sola instancia con srvctl (rolling)
- Añadir un servicio RAC con instancias preferred/available (incluido Application Continuity)
- Reubicar un servicio RAC en otra instancia
- Comprobar el estado de los recursos del clúster (crsctl stat res -t)
- Comprobar la salud de la pila del clúster, la lista de nodos y la versión de Clusterware