dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbooks Library/oracle/#43
Runbook #43
oracle
AvailabilitySEV2 · DEGRADATION15-30 dakika / 15-30 minsSYSDBA / DBA / SELECT_CATALOG_ROLE

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.

Related Metrics:M44
Related Scripts:S74S67
#ora-01555#undo#snapshot-too-old#long-query

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.

🟢 Salt Okunur (Read-Only)·🟡 Geri Alınabilir (Reversible)·🔴 Yüksek Etkili / Geri Alınamaz (High Impact)

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

🟢 Read-Only1. S74 ile undo istatistiklerini ve etkin ayarları karşılaştırın:
sql
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');
🟢 Read-Only2. Undo tablespace dosyalarının boyut/autoextend sınırını ve fiziksel disk/ASM alanını kontrol edin. S67 ile uzun süren işler/SQL_ID'leri ve eşzamanlı DML hacmini eşleştirin.
🟢 Read-Only3. `maxquerylen` süresi mevcut `tuned_undoretention` değerinden uzun mu, `NOSPACEERRCNT` artıyor mu? ORA-01555'in diğer kaynağı, commit sırasında aynı tabloyu tekrar tekrar değiştiren uygulama mantığı olabilir; tek başına undo_retention yükseltmeyin.
🟢 Read-Only4. 12c/19c CDB/PDB ortamında doğru container'da ve ilgili instance'ın undo alanında ölçün; local undo yapılandırması ve RAC instance farklarını kontrol edin.

4. Remediation & Action Plan

🟡 Reversible1. Undo alanı gerçek anlamda küçükse ve diskte yer varsa mevcut undo datafile'ına autoextend açın veya undo tablespace'e datafile ekleyin; **dosya adı ve boyutu değişiklik planına özel** olmalıdır:
sql
-- Ö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;
🟡 Reversible2. Uzun raporu yoğun DML saatleri dışında çalıştırın, süreyi kısaltacak sorgu planı/indeks iyileştirmesi yapın. Uygulama batch transaction'larını sınırlandırın; cursor üzerinde sık COMMIT gibi örüntüleri düzeltin.
🟡 Reversible3. Yeterli undo **alanı** sağlandıktan sonra retention'ı iş gereksinimine göre artırın:
sql
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.

More ORACLE Runbooks