Oracle Hard Parse Spike and Shared Pool Pressure: Root Cause
Measures hard-parse rate and cursor proliferation to separate bind-variable, plan and statistics issues without flushing the shared pool.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- 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. Business & Technical 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. Diagnosis & Root-Cause Analysis
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. Remediation & Action Plan
5. Verification & Health Checks
- İ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. Rollback & Contingency Plan
- 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.