dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbook #37
oracle
BackupSEV1 · KRİTİK KESİNTİ15-30 dakika / 15-30 minsSYSDBA / DBA / SELECT_CATALOG_ROLE

Oracle FRA Doldu (ORA-19809 / ORA-00257): Archiver Donması Acil Müdahale

Fast Recovery Area dolduğunda donan veritabanını kurtarır. Archive log'ları RMAN ile güvenle temizler, FRA boyutunu artırır ve temel nedeni (yedek/Data Guard) çözer.

İlişkili Metrik:M39M45
İlişkili Script:S66S78
#fra#archivelog#ora-00257#rman

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.

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

1. Belirti / Symptom

- Uygulama oturumları donuyor; yeni bağlantılar `ORA-00257: Archiver error. Connect AS SYSDBA only until resolved.`

- Alert log: `ORA-19809: limit exceeded for recovery files`, `ORA-19804: cannot reclaim bytes disk space from limit`.

- M39 (FRA gerçek doluluk) > %90.

2. Etki / Impact

Archiver yeni redo log'ları arşivleyemediği için log switch tamamlanamaz, **veritabanı yazmaya devam edemez ve fiilen donar.** Normal kullanıcılar bağlanamaz.

3. Teşhis / Diagnosis

🟢 Salt Okunur1. SYSDBA ile bağlanın: `sqlplus / as sysdba`
🟢 Salt Okunur2. FRA durumu (S66):
sql
SELECT name, ROUND(space_limit/1073741824,2) AS limit_gb, ROUND(space_used/1073741824,2) AS used_gb,
       ROUND(space_reclaimable/1073741824,2) AS reclaimable_gb FROM v$recovery_file_dest;
SELECT file_type, percent_space_used, percent_space_reclaimable, number_of_files
FROM v$recovery_area_usage ORDER BY percent_space_used DESC;
🟢 Salt Okunur3. **Nedeni anlayın:** Hangi dosya tipi dolduruyor?

- `ARCHIVED LOG` baskın ve reclaimable düşük: log'lar yedeklenmemiş veya silinememiş (RMAN politikası, **Data Guard standby henüz almamış** olabilir).

- `BACKUP PIECE`: yedek saklama süresi çok uzun.

- `FLASHBACK LOG`: flashback retention çok yüksek veya yoğun yazma.

🟢 Salt Okunur4. Yedek durumu (S78): son RMAN yedeği başarılı mı? Başarısız yedek log'ların silinmesini engeller.
🟢 Salt Okunur5. Data Guard varsa standby'ın uygulama durumunu kontrol edin; silinmesi gereken log'lar henüz uygulanmamış olabilir (`RMAN` politikası `APPLIED ON STANDBY`).

4. Müdahale / Response

🟡 Geri Alınabilir1. **En hızlı ve güvenli: FRA boyutunu geçici artırın** (disk/ASM alanı varsa), böylece archiver hemen devam eder:
sql
ALTER SYSTEM SET db_recovery_file_dest_size = 200G SCOPE=BOTH;
🟡 Geri Alınabilir2. **Archive log'ları yedekleyip silin** (yedeklenenler güvenle silinir):
sql
RMAN> BACKUP ARCHIVELOG ALL NOT BACKED UP 1 TIMES DELETE INPUT;
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
RMAN> DELETE OBSOLETE;
🔴 YÜKSEK RİSK / GERİ ALINAMAZ3. **Yedeklenmemiş log'ları silmeyin.** Dosya sistemi seviyesinde `rm` ile archive log silmeyin; RMAN kataloğunu bozar ve kurtarma zincirini kırar. Yedeksiz silmek zorunda kalırsanız (`DELETE ARCHIVELOG ALL`) **hemen sonra yeni bir full yedek** alın, çünkü point-in-time recovery imkanı kaybolur.
🟡 Geri Alınabilir4. Data Guard varsa: Standby'ın log'ları aldığını doğrulayın, gerekirse silme politikasını ayarlayın:
sql
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

5. **Kalıcı çözüm:**

- Archive log yedeğini sık alın (RPO'ya göre saatlik veya daha sık) ve `DELETE INPUT` kullanın.

- Saklama politikasını netleştirin: `CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;`

- M39'a %80 uyarı, %90 kritik alarm kurun; FRA'yı veri büyümesine göre boyutlandırın.

- Flashback database açıksa retention'ı gözden geçirin.

5. Doğrulama / Verification

- Alert log'da ORA-19809 yok; kullanıcılar bağlanabiliyor ve yazma normal.

- `real_used_pct` (M39) %80'in altına indi.

- `v$archive_dest` içinde hata yok, son RMAN yedeği başarılı.

6. Geri Alma / Rollback

- `db_recovery_file_dest_size` eski değerine çevrilebilir (mevcut kullanımın altına inmeyecek şekilde).

- Silinen archive log/yedekler geri alınamaz; yedek zincirinin sağlam olduğunu `RESTORE DATABASE VALIDATE;` ve `LIST BACKUP SUMMARY;` ile doğrulayın.

Diğer ORACLE Runbook'ları