Oracle Hard Parse Artışı ve Shared Pool Baskısı: Kök Neden
Hard parse oranını ve cursor çoğalmasını ölçerek bind variable, plan değişimi ve istatistik sorunlarını ayırır; shared pool'u boşaltmadan çözüm üretir.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M46 hard parse oranı baseline üstünde; CPU ve `library cache: mutex X`, `cursor: pin S wait on X` gibi beklemeler artabilir.
- Aynı sorgunun farklı literal değerlerle çok sayıda benzeri bulunur.
2. Etki / Impact
CPU parse işlemine harcanır, eşzamanlılık ve yanıt süreleri bozulur; shared pool alanı verimsiz kullanılır.
3. Teşhis / Diagnosis
SELECT name, value FROM v$sysstat
WHERE name IN ('parse count (hard)','parse count (total)','execute count')
ORDER BY name;SELECT * FROM (
SELECT sql_id, executions, parse_calls, version_count,
SUBSTR(sql_text,1,120) AS sql_text
FROM v$sqlarea
WHERE parse_calls > 100
ORDER BY parse_calls DESC
) WHERE ROWNUM <= 20;4. Müdahale / Response
5. Doğrulama / Verification
- İki ölçüm arası hard parse / toplam parse oranı baseline'a döndü; CPU ve library cache beklemeleri azaldı, M46 düzeldi.
- Sorgu yanıt süresi iyileşti, plan regresyonu yok.
6. Geri Alma / Rollback
- Uygulama bind değişikliği önceki sürüme döndürülür; `SESSION_CACHED_CURSORS` eski değere alınır.
- İstatistik değişiklikleri için önceki istatistikleri yedeklemeden otomatik geri alma varsaymayın; eski/yeni planları karşılaştırın.