dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbooks Library/oracle/#37
Runbook #37
oracle
BackupSEV1 · CRITICAL OUTAGE15-30 dakika / 15-30 minsSYSDBA / DBA / SELECT_CATALOG_ROLE

Oracle FRA Full (ORA-19809 / ORA-00257): Archiver Stuck Emergency Response

Rescues a database that freezes when the Fast Recovery Area fills. Safely purges archive logs with RMAN, enlarges the FRA and fixes the root cause (backup/Data Guard).

Related Metrics:M39M45
Related Scripts:S66S78
#fra#archivelog#ora-00257#rman

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 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. Business & Technical 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. Diagnosis & Root-Cause Analysis

🟢 Read-Only1. SYSDBA ile bağlanın: `sqlplus / as sysdba`
🟢 Read-Only2. 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;
🟢 Read-Only3. **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.

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

4. Remediation & Action Plan

🟡 Reversible1. **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;
🟡 Reversible2. **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;
🔴 HIGH RISK / IRREVERSIBLE3. **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.
🟡 Reversible4. 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. Verification & Health Checks

- 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. Rollback & Contingency Plan

- `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.

More ORACLE Runbooks