RMAN ile restore ve recovery
OracleSeviye: İleriSüre: 30 dk – birkaç saat (veritabanı boyutuna bağlı)Arıza anında doğru RMAN geri dönüşünü adım adım yaptırır: 19 senaryo — datafile, SYSTEM/UNDO, tempfile, bozuk blok, online redo log, controlfile ve spfile kaybı; tam restore, başka dizine/ASM'e ve başka sunucuya restore; zamana dönüş (CDB ya da PDB PITR), Flashback Database, tablespace PITR, tek tablo geri alma (RECOVER TABLE), silinmiş PDB; Data Guard üzerinden ağdan restore (FROM SERVICE), yalnız arşiv log restore, taşınmış yedekleri tanıtma (CATALOG) ve veri yazmayan prova (PREVIEW/VALIDATE). Her senaryo teşhis → güvenlik ağı → uygulama → doğrulama → yeni yedek sırasıyla ilerler; tek instance, Oracle Restart ve RAC (CLUSTER_DATABASE=FALSE ile tek instance'ta geri dönüş) için ayrı adımlar verir. Yedek almayı değil geri dönmeyi anlatır; yedek planı için "Oracle yedekleme stratejisi" rehberi.
Yapı: 1 sunucu (tek instance ya da Oracle Restart) veya RAC; yeni host senaryosunda kaynak + hedef
Senaryolar
- Prova: RESTORE … PREVIEW / VALIDATE (hiçbir şey değiştirmez) — Bir şey bozulmadı; yedeklerin gerçekten geri dönüşe yettiğini veri yazmadan görmek istiyorsunuz (veritabanı açık kalır). Aylık restore tatbikatı ve hangi senaryoyu seçeceğinizden emin olmadığınız durum için de ilk adımdır.
- Yedekler başka dizine taşındı / RMAN yedeği bulamıyor (CATALOG) — Yedek parçaları vardır ama RMAN bilmiyor (taşındı, NFS değişti, başka sunucudan geldi): RMAN-06023/06025 alıyorsunuz. Veritabanı açık kalır.
- Yalnız arşiv log'ları geri yükle (RESTORE ARCHIVELOG) — LogMiner, standby boşluğu ya da elle recovery için belirli sequence aralığındaki arşivler diske lazım; veritabanı açık kalır, hiçbir dosyanın üzerine yazılmaz.
- Tek datafile ya da tablespace kaybı/bozulması (veritabanı açık kalır) — Veritabanı açık, yalnız bir datafile ya da tablespace okunamıyor (ORA-01157/01110/01116); diğer her şey çalışıyor. Dosya SYSTEM/UNDO'ya aitse "SYSTEM ya da UNDO", tempfile ise "Tempfile", dosya açılıyor ama birkaç blok bozuksa (ORA-01578) "Bozuk blok" kartını seçin.
- Bozuk blok var (ORA-01578, block media recovery) — Bir sorgu ORA-01578/ORA-26040 veriyor, yedek ORA-19566 ile duruyor ya da VALIDATE bozuk blok buldu; dosyanın geri kalanı sağlam. Veritabanı açık kalır, yalnız bozuk bloklar onarılır (Enterprise Edition; SE2'de dosya geri yüklenir). Dosyanın tamamı açılamıyorsa (ORA-01157) "Tek datafile" kartı.
- SYSTEM ya da UNDO datafile kayıp (veritabanı açılmıyor) — Kayıp ya da bozuk dosya SYSTEM veya UNDO tablespace'ine ait: offline alınamaz, veritabanı (PDB dosyasıysa yalnız o PDB) kapanır ve MOUNT'ta geri yüklenir. Veri kaybı olmaz. Başka bir tablespace'in dosyasıysa "Tek datafile" kartı veritabanını kapatmadan çözer.
- Tempfile kayıp ya da bozuk (TEMP tablespace) — Sıralama/hash işlemleri ORA-01157/ORA-01187/ORA-25153 veriyor ve dosya bir tempfile (hata mesajındaki numara db_files değerinden büyüktür, ör. data file 201). Restore gerekmez; yeni tempfile eklenir, veritabanı açık kalır.
- Online redo log kayıp ya da bozuk — Alert log'da ORA-00313/00312 (açılamıyor) ya da ORA-00327/00366/00367 (bozuk). Bir üye kayıpsa ya da grup INACTIVE ise veritabanı açık kalır; CURRENT grup kayıpsa restore + RESETLOGS gerekir ve son işlemler kaybolur. Grubun durumunu teşhis adımı gösterir; seçimi ona göre yapın.
- Tüm controlfile kopyaları kayıp — Instance MOUNT aşamasında controlfile bulunamıyor ya da okunamıyor (ORA-00205/00202/00210); datafile ve redo sağlam. Kopyalardan biri sağlamsa restore gerekmez (teşhis adımı gösterir); hepsi kayıpsa autobackup'tan geri yüklenir ve RESETLOGS ile açılır, online redo sağlam olduğu için veri kaybı olmaz.
- spfile kayıp — spfile silindi ya da bozuldu; instance açılmıyor (ORA-01078/LRM-00109) ya da açık ama dosya yok. Datafile'lara dokunulmaz, veri kaybı olmaz; instance hâlâ açıksa kesinti de olmaz.
- Tam restore, aynı sunucu (datafile'lar kayıp; controlfile ve redo sağlam) — Datafile'ların hepsi ya da çoğu gitti, controlfile ve online redo log sağlam; veritabanı kapanır, veri kaybı olmaz. Dosyaların eski diski/dizini artık kullanılamıyorsa "başka dizine" kartını, controlfile da kayıpsa önce "controlfile" kartını, sunucu tamamen gittiyse "Başka sunucuya restore" kartını seçin.
- Disk gitti: veritabanını başka dizine / ASM'e geri yükle (SET NEWNAME) — Datafile'ların durduğu disk ya da disk grubu kullanılamaz; controlfile ve redo sağlam. Dosyalar yeni dizine ya da ASM disk grubuna geri yüklenir, veritabanı kapanır, veri kaybı olmaz.
- Zamana / SCN'e dönüş (PITR, RESETLOGS) — Yanlış DELETE/UPDATE/TRUNCATE ya da hatalı uygulama sürümü: veritabanını (ya da yalnız PDB'yi) geçmiş bir ana götürür; o andan sonraki tüm değişiklikler kaybolur (RESETLOGS). Önce daha dar yollara bakın: tek tablo → "Tek tabloyu geri al", tek tablespace → TSPITR, flashback açıksa → "Flashback Database" (restore etmez, çok daha hızlı).
- Flashback Database ile geri sar (restore point / SCN / zaman) — Flashback açık ya da guaranteed restore point var ve hiçbir dosya kayıp değil: restore etmeden dakikalar içinde geri sarılır (Enterprise Edition). RESETLOGS gerekir. Açık mı: SELECT flashback_on FROM v$database; → YES ya da v$restore_point'te GUARANTEE_FLASHBACK_DATABASE = YES satırı.
- Bir tablespace'i geçmiş bir ana döndür (TSPITR) — Hatalı işlem yalnız bir tablespace'teki nesneleri etkiledi; veritabanının geri kalanı bugünde kalmalı (Enterprise Edition). Tablespace işlem boyunca offline olur ve içindeki tüm nesneler hedef ana döner; yalnız bir-iki tablo etkilendiyse "Tek tabloyu geri al" daha az şeyi geri götürür.
- Tek tabloyu geri al (RECOVER TABLE, 12c+ Enterprise Edition) — Tek bir tablo yanlışlıkla silindi ya da bozuldu; veritabanının geri kalanı olduğu gibi kalmalı (12c+ Enterprise Edition). DROP edildiyse ve PURGE yapılmadıysa önce recyclebin'e bakın: FLASHBACK TABLE … TO BEFORE DROP saniyeler sürer (teşhis adımı gösterir).
- Silinmiş PDB'yi geri getir (DROP PLUGGABLE DATABASE) — Bir PDB DROP PLUGGABLE DATABASE ile silindi. Dosyalar duruyorsa XML ile yeniden takılır; silindiyse yedekten getirilir (21c+ tek komut, 19c geçici CDB üzerinden). CDB açık kalır.
- Başka sunucuya restore (yeni host, controlfile autobackup'tan) — Sunucu tamamen gitti ya da kopya/test ortamı kurulacak: yedek başka bir sunucuya geri yüklenir (yalnız tek instance, dosya sistemi). Yedeklenmiş son arşive kadar dönülür, sonrası kaybolur; kopya RESETLOGS ile açılır.
- Data Guard: dosyayı standby/primary'den ağ üzerinden al (FROM SERVICE) — Data Guard var: primary'deki kayıp datafile'ı standby'dan, geride kalmış standby'ı ya da kayıp standby controlfile'ını primary'den yedek parçası kullanmadan alırsınız (12c+).
Başlamadan önce
- Olay kayda alındı ve uygulama ekibi bilgilendirildi: ne zaman, ne oldu, hangi hata mesajı. Geri dönüş başlamadan önce mevcut durumun kopyası alınabiliyorsa alındı (sunucu/disk snapshot'ı ya da en azından kalan datafile'lar, controlfile ve online redo log'ların kopyası); yanlış adım durumu daha da kötüleştirebilir.
- Yedekler erişilebilir: …… ve arşiv log'lar için FRA …… bağlı ve okunabilir. Yedekler teyp/MML'deyse SBT kanalı ve yazılım ajanı çalışıyor.
- DBID biliniyor (…). Bilinmiyorsa: eski RMAN log'larındaki connected to target database: … (DBID=…) satırı… ya da autobackup dosya adı (…_cf_c-<DBID>-<YYYYMMDD>-<nn>)….
- Auxiliary dizini … var ve SYSTEM + SYSAUX + UNDO + tablonun tablespace'i kadar boş alan içeriyor; sunucuda geçici instance için ~2 GB boş RAM var.
- …RECOVER TABLE ("Recovering tables and table partitions from RMAN backups") Enterprise Edition özelliğidir.…Standard Edition 2'de RECOVER TABLE yoktur: aşağıdaki adımlar yerine yedeği başka bir sunucuya geri yükleyip ("Başka sunucuya restore" + PITR) tabloyu Data Pump ile alın.…
- Hedef sunucuda aynı Oracle sürümü ve aynı RU seviyesi yalnız yazılım olarak kurulu (opatch lspatches iki tarafta aynı), oracle kullanıcısı/grupları ve dizin yapısı kaynakla aynı, yeterli disk var. Hedefte aynı adla çalışan bir veritabanı yok.
- Bakım/kesinti penceresi onaylandı… (bu senaryoda veritabanı açık kalır; yalnız ilgili nesneler etkilenir)…. Yedekleme zamanlayıcısı (cron/systemd/scheduler) geri dönüş bitene kadar durduruldu; aksi hâlde yarım işlem sırasında yedek ya da DELETE OBSOLETE çalışabilir.
- Clusterware'deki kayıt biliniyor: spfile ve parola dosyasının yeri, …instance'lar ve node'lar…veritabanının durumu… (srvctl config database -db …). Bu çıktıyı geri dönüşten önce saklayın.
- …Block media recovery…Tablespace point-in-time recovery…Flashback Database… Enterprise Edition özelliğidir; Standard Edition 2'de komut çalışmaz. Bu senaryonun SE2 yolu adımlarda ayrıca gösterilir.
- Geçici (auxiliary) instance için …………… dizininde SYSTEM + SYSAUX + UNDO… + …… + PDB… kadar boş alan, sunucuda da en az hedefin sga_target'ı kadar boş bellek var (RMAN geçici instance'a varsayılan olarak aynı SGA'yı verir).
- Data Guard hazır: iki tarafta da parola dosyası aynı (SYS ya da SYSBACKUP parolası aynı), bu sunucunun tnsnames.ora'sında … ve … girişleri var, COMPATIBLE ≥ 12.0. FROM SERVICE işletim sistemi doğrulamasıyla (rman target /) çalışmaz; RMAN parolayla bağlanır.
- Flashback Database için FRA tanımlı ve ya flashback logging açık (FLASHBACK_ON = YES) ya da hedef an bir guaranteed restore point. Hiçbir datafile kayıp/bozuk değil (flashback kayıp dosyayı geri getirmez) ve hedef andan sonra datafile küçültülmemiş (shrink) ya da controlfile yeniden oluşturulmamış.
Rehberin aşamaları
- Durum tespiti — Durumu tespit et · Durumu tespit et · Recyclebin'i kontrol et (DROP ise belki yedek gerekmez) · Hedef anı belirle
- Gereken yedek var mı? — Instance'ı MOUNT modunda aç · Instance'ı MOUNT modunda aç (srvctl) · Yedekleri listele · Autobackup dosyalarını bul · Geri dönüşü önizle (PREVIEW) · Yedek parçalarını oku ve doğrula (VALIDATE) …
- Datafile / tablespace geri dönüşü (online) — … offline al · … geri yükle ve kurtar · … online yap
- Tam restore (aynı sunucu) — Veritabanını geri yükle, kurtar ve aç · …Cluster moduna dön ve veritabanını Clusterware ile başlat…Veritabanını Clusterware (Oracle Restart) ile yeniden başlat…
- Zamana / SCN'e dönüş (PITR) — Dönüşten önce mevcut durumu yedekle · Veritabanını tek instance MOUNT'a al (srvctl) · …PDB'yi…Veritabanını… hedef ana geri götür · …Cluster moduna dön ve veritabanını Clusterware ile başlat…Veritabanını Clusterware (Oracle Restart) ile yeniden başlat…
- Tek tabloyu geri al (RECOVER TABLE) — Auxiliary dizinini hazırla · Tabloyu hedef andan geri al · Geri gelen veriyi karşılaştır
- Controlfile geri dönüşü — Kalan bir controlfile kopyası var mı bak · Kalan bir controlfile kopyası var mı bak (ASM) · Instance'ı NOMOUNT aç (srvctl) · Controlfile'ı autobackup'tan geri yükle ve aç · …Cluster moduna dön ve veritabanını Clusterware ile başlat…Veritabanını Clusterware (Oracle Restart) ile yeniden başlat…
- spfile geri dönüşü — spfile'ı bellekteki parametrelerden yeniden yaz · spfile'ı bellekteki parametrelerden ASM'ye yaz · spfile'ı autobackup'tan geri yükle · spfile'ı autobackup'tan ASM'ye geri yükle · Instance'ın spfile ile açıldığını doğrula
- Kaynak sunucu: bilgi topla ve yedekleri aktar — Güncel yedek al · DBID, autobackup ve dizin listesini yaz · Yedekleri ve parola dosyasını hedefe kopyala
- Hedef sunucu: restore ve recovery — Dizinleri oluştur · oratab kaydını ekle · spfile ve controlfile'ı geri yükle, MOUNT et · Yedek parçalarını tanıt (CATALOG) · Geri yükle, son arşive kadar kurtar ve aç · Kopyayı kaynaktan ayır (isteğe bağlı)
- Teşhis: RMAN yedeği neden bulamıyor? — Yedek parçalarının yeni yerini gör · RMAN'ın bildiği yedekleri ve eksikleri listele
- Güvenlik ağı — Controlfile'ın şimdiki hâlini kopyala
- Yedekleri RMAN'a tanıt — Yeni dizindeki parçaları tanıt (CATALOG START WITH) · Eski yerin kayıtlarını temizle
- Doğrulama: yedekler artık bulunuyor mu? — Geri dönüşü yeniden önizle · Yedek betiğini yeni yere göre düzelt
- Teşhis: hangi arşivler gerekli ve yedekte var mı? — Arşivlerin diskte olup olmadığına bak · Arşivlerin yedeğini bul ve önizle
- Güvenlik ağı: hedef dizin ve yer — Geri yükleme dizinini hazırla
- Arşivleri geri yükle — Arşivleri geri yükle (RESTORE ARCHIVELOG)
- Doğrulama ve temizlik — Geri gelen arşivleri listele · İş bitince geri yüklenen arşivleri sil
- Teşhis: bozuk blok mu? — Dosyayı tara (VALIDATE) · Bozuk blokları ve ait oldukları nesneyi listele
- Güvenlik ağı: sağlam kopya ve arşiv zinciri var mı? — Dosyanın yedeklerini ve geri dönüş zincirini önizle
- Bozuk blokları onar — Bozuk blokları yedekten onar (RECOVER CORRUPTION LIST) · Standard Edition 2: datafile'ı geri yükleyin · NOLOGGING bloklarını düzelt (varsa)
- Doğrulama: bloklar sağlam mı? — Dosyayı yeniden tara · Kök nedeni ara: disk ve depolama hataları
- Teşhis: dosya SYSTEM ya da UNDO mu? — Instance'ı MOUNT modunda aç · Instance'ı MOUNT modunda aç (srvctl) · Dosyanın SYSTEM ya da UNDO olduğunu doğrula · Gereken yedeği önizle ve doğrula
- Güvenlik ağı — Controlfile'ın şimdiki hâlini kopyala
- SYSTEM / UNDO datafile'ı geri yükle — PDB'yi kapat · Datafile'ı geri yükle, kurtar ve aç · …Cluster moduna dön ve veritabanını Clusterware ile başlat…Veritabanını Clusterware (Oracle Restart) ile yeniden başlat…
- Teşhis: kayıp dosya bir tempfile mı? — Tempfile'ları ve durumlarını gör · Dosyayı ve alert log'u kontrol et
- Güvenlik ağı: yer kontrolü — Yeni tempfile için yer var mı bak
- Yeni tempfile ekle, kayıp olanı çıkar — Yeni tempfile ekle ve kayıp olanı çıkar
- Doğrulama — Temp tablespace'i doğrula
- Teşhis: hangi grup, hangi durumda? — Redo log gruplarının durumunu gör