Oracle ORA-00020: Emergency Response to Process Exhaustion
Identifies sessions behind process exhaustion, reduces connections safely and plans a permanent process-capacity change requiring a restart.
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
- `ORA-00020: maximum number of processes exceeded` ve başarısız yeni bağlantılar; M37 kritik.
- Uygulama bağlantı havuzları zaman aşımına uğrar. Listener ve alert log'da bağlantı hataları görülebilir.
2. Business & Technical Impact
Yeni dedicated-server süreçleri oluşturulamaz; mevcut işlemler sürse de yeni iş yükü kabul edilemez. RAC'te sorun instance bazlıdır ve servis yönlendirmesini etkileyebilir.
3. Diagnosis & Root-Cause Analysis
SELECT inst_id, resource_name, current_utilization, max_utilization, limit_value
FROM gv$resource_limit
WHERE resource_name IN ('processes','sessions')
ORDER BY inst_id, resource_name;
SELECT inst_id, username, machine, program, status, COUNT(*) AS sessions
FROM gv$session
WHERE type = 'USER'
GROUP BY inst_id, username, machine, program, status
ORDER BY sessions DESC FETCH FIRST 30 ROWS ONLY;4. Remediation & Action Plan
SELECT inst_id, sid, serial#, username, machine, last_call_et
FROM gv$session
WHERE type='USER' AND status='INACTIVE' AND last_call_et > 1800
ORDER BY last_call_et DESC;
-- Tek instance: ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
-- RAC: ALTER SYSTEM KILL SESSION 'sid,serial#,@inst_id' IMMEDIATE;Büyük açık transaction'ın rollback'i uzun sürebilir; **tüm INACTIVE oturumları körlemesine öldürmeyin**.
ALTER SYSTEM SET processes=1200 SCOPE=SPFILE;
-- Etkinleşmesi için ilgili instance yeniden başlatılmalıdır; RAC'te her instance'ı ayrı değerlendirin.12c/19c CDB ortamında `processes` instance parametresidir; PDB içinden değiştirmeyin.
5. Verification & Health Checks
- M37 eşik altına indi, yeni uygulama bağlantıları açılıyor; `gv$resource_limit` tekrar tırmanmıyor.
- Kaynak uygulamadaki havuz limiti ve kapanmayan bağlantı hatası düzeltildi; alert log'da yeni ORA-00020 yok.
6. Rollback & Contingency Plan
- Sonlandırılan oturumlar geri gelmez, açık işlemleri rollback olur ve uygulama yeniden denemelidir.
- `SCOPE=SPFILE` ile değişen değer henüz etkin değilse önceki değeri `SCOPE=SPFILE` ile yazın; yeniden başladıysa eski değere dönüş için tekrar restart gerekir. Yeni sınırı doğrulamadan uygulama havuzunu eski seviyeye çıkarmayın.