Oracle ORA-01555 Snapshot Too Old: Undo ve Uzun Sorgu Analizi
ORA-01555'in undo yeniden kullanımı ve uzun okuma kaynaklı nedenlerini ölçer; undo boyutlandırma, sorgu ve batch düzenlemesiyle güvenli çözüm sunar.
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
- Uygulama/rapor sorgusunda `ORA-01555: snapshot too old`; M44'te `SSOLDERRCNT` artabilir.
- Uzun raporlar veya yoğun DML dönemlerinde olay çoğalır. `NOSPACEERRCNT` artışı ek alan baskısıdır.
2. Etki / Impact
Uzun sorgular tutarlı geçmiş veriyi okuyamaz, başarısız olup yeniden çalıştırılması gerekir; toplu işler ertelenir.
3. Teşhis / Diagnosis
SELECT begin_time, end_time, maxquerylen, tuned_undoretention,
ssolderrcnt, nospaceerrcnt, undoblks
FROM v$undostat
WHERE begin_time > SYSDATE - 1
ORDER BY begin_time DESC;
SELECT name, value FROM v$parameter
WHERE name IN ('undo_tablespace','undo_retention','undo_management');4. Müdahale / Response
-- Örnek: tablespace ve dosya yolunu ilgili sistemden doğrulayın.
ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/DB/undo02.dbf'
SIZE 4G AUTOEXTEND ON NEXT 512M MAXSIZE 16G;ALTER SYSTEM SET undo_retention=3600 SCOPE=BOTH;**Anti-pattern:** `undo_retention` tek başına garanti değildir; alan baskısında undo yeniden kullanılabilir. `RETENTION GUARANTEE` yazmaları `ORA-30036` ile durdurabileceğinden kapasite planı olmadan açmayın.
5. Doğrulama / Verification
- Başarısız sorgu tekrar çalıştırıldığında tamamlanıyor; sonraki dönemlerde `SSOLDERRCNT` artmıyor, M44 normale döndü.
- Undo doluluğu ve disk alanı güvenli; `NOSPACEERRCNT=0` eğiliminde.
6. Geri Alma / Rollback
- `undo_retention` eski değerine döndürülebilir; ek datafile geri almak kolay değildir, kalıcı alan planlamasına dahil edin.
- Sorgu ve batch değişiklikleri uygulama sürümü geri alınarak çevrilebilir; başarısız sorgular manuel yeniden çalıştırılır.