Cluster genelinde bekleme olaylarını (gc waits) GV$ ile instance bazında analiz et
OracleRAC & GridKomut
-- Instance bazinda Cluster sinifi beklemeler (baslangictan beri):
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;
-- Su an bekleyen oturumlar, instance ve olaya gore:
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;
-- Son 15 dakikada ASH: hangi instance gc beklemesinde
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;Ne yapar?
GV$ view'larıyla tüm instance'lardaki Cluster sınıfı beklemeleri (gc cr/current block 2-way/3-way, gc buffer busy, gc cr request) ve ortalama gecikmeyi tek sorguda gösterir.
Ne zaman kullanılır?
RAC'ta yavaşlık şikayetinde sorunun interconnect/global cache kaynaklı olup olmadığını ve hangi instance'ta yoğunlaştığını anlamak için.
Dikkat
gv$active_session_history Diagnostics Pack lisansı gerektirir. avg_ms birkaç ms'nin üzerindeyse önce interconnect'i (MTU, packet loss, netstat -s) ve LMS CPU'sunu kontrol et; gc buffer busy genelde uygulama hot block'u (sequence, right-hand index) işaretidir.
İlgili
- RAC veritabanı, instance ve service durumunu srvctl ile gör
- RAC veritabanını veya tek instance'ı srvctl ile durdur / başlat (rolling)
- RAC service'i preferred/available instance'larla ekle (Application Continuity dahil)
- RAC service'ini başka instance'a taşı (relocate)
- Cluster kaynaklarının durumunu gör (crsctl stat res -t)
- Cluster stack sağlığını, node listesini ve Clusterware sürümünü kontrol et