Clusterweite Wait Events (gc-Waits) je Instanz mit GV$ analysieren
OracleRAC & GridBefehl
-- 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;Was es tut
Zeigt über GV$-Views die Waits der Klasse Cluster (gc cr/current block 2-way/3-way, gc buffer busy, gc cr request) und ihre durchschnittliche Latenz über alle Instanzen in einer Abfrage.
Wann einsetzen
Wenn Benutzer Langsamkeit im RAC melden, um zu erkennen, ob das Problem vom Interconnect/Global Cache kommt und auf welche Instanz es sich konzentriert.
Vorsicht
gv$active_session_history erfordert die Diagnostics-Pack-Lizenz. Liegt avg_ms über einigen ms, prüfe zuerst den Interconnect (MTU, Paketverlust, netstat -s) und die LMS-CPU; gc buffer busy deutet meist auf einen Hot Block der Anwendung hin (Sequence, rechtslastiger Index).
Verwandte Einträge
- Status von RAC-Datenbank, Instanzen und Services mit srvctl prüfen
- RAC-Datenbank oder einzelne Instanz mit srvctl stoppen/starten (rolling)
- RAC-Service mit Preferred-/Available-Instanzen hinzufügen (inkl. Application Continuity)
- RAC-Service auf eine andere Instanz verlagern
- Status der Cluster-Ressourcen prüfen (crsctl stat res -t)
- Zustand des Cluster-Stacks, Knotenliste und Clusterware-Version prüfen