DBAtlas · Atlas für Datenbankbetrieb

Clusterweite Wait Events (gc-Waits) je Instanz mit GV$ analysieren

OracleRAC & Grid

Befehl

-- 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).

In DBAtlas öffnen →

Verwandte Einträge