Oracle ORA-01555 Snapshot Too Old: Undo and Long-Query Analysis
Diagnoses ORA-01555 from undo reuse and long reads, then guides safe undo sizing, query and batch improvements.
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
- 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. Business & Technical Impact
Uzun sorgular tutarlı geçmiş veriyi okuyamaz, başarısız olup yeniden çalıştırılması gerekir; toplu işler ertelenir.
3. Diagnosis & Root-Cause Analysis
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. Remediation & Action Plan
-- Ö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. Verification & Health Checks
- 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. Rollback & Contingency Plan
- `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.