ORACLE BACKUP — RESTORE

Harun Erdinç
Machine Learning Turkiye
15 min readJan 16, 2022

Herkese Merhaba

Bu yazımda Oracle Veritabanında Backup-Restore işlemlerini anlattım.

Keyifli okumalar dilerim.

Oracle Veritabanı Yedek Alma

  • Oracle’ da bir veritabanının yedeğini almak için 2 farklı yaklaşım vardır.

1. USER MANAGED (Kullanıcı Yönetimli)

2. RMAN (Recovery Manager)

1.USER MANAGED (Kullanıcı Yönetimli)

  • Backup ve Restore işlemlerinin tamamen kullanıcı tarafından yönetilen yaklaşımdır.
  • 2 farklı kullanıcı yönetimli backup alma yöntemi vardır.

1.1.Cold Backup: Veritabanı kapalıyken alınan backuplar.

2.2. Hot Backup: Veritabanı açıkken alınan backuplar.

1.1.Cold Backup:

  • Cold backup alabilmek için veritabanımızı kapatıyoruz.
  • Daha sonra veritabanı dosyalarını (datafile, controlfile, tempfile, logfile) manuel olarak işletim sistemi üzerinde başka bir yere kopyalıyoruz.

Örnek COLD Backup:

  • İlk önce veritabanı kapatılır.
  • Daha sonra veritabanı dosyalarının kopyasının alınacağı yeni bir dizin oluşturuyoruz.
  • Aşağıdaki komutlar ile veritabanı dosyalarının yerini öğreniyoruz.

SQL> select name from v$datafile

union

select name from v$controlfile

union

select name from v$tempfile

union

select member from v$logfile;

  • Son olarak tüm veritabanı dosyalarını yeni oluşturduğum dosyaya kopyalıyoruz.

oracledb /home/oracle> cp /u01/app/oracle/oradata/Veridatadb/*.* backup_veridata

  • Veritabanı dosyalarını birebir kopyalayacağımız için bu dosyaların boyutlarını öğrenip ona göre yedek disk kullanıyoruz.
  • Aşağıdaki sorgu ile veritabanı dosyalarının toplam boyutunu öğrenebiliriz.

Cold Backup Restore Etme:

  • Veritabanı NOARCHIVELOG modda iken alınan cold backup Online Redolog dosyaları ile aşağıdaki gibi geri yüklenir.
  1. Veritabanını kapatıyoruz.
  2. Yeni dosyaya kopyaladığımız veritabanı dosyalarını tekrar orijinal yerine geri kopyalıyoruz.
  3. Son olarak veritabanını açıyoruz.
  • Veritabanı ARCHIVELOG modda değilken alınan Cold Backup online redolog dosyaları ile aşağıdaki gibi geri yüklenir.

1. Veritabanı kapatılır.

2. Veritabanı Mount modda geri açılır.

3. Yeni dosyaya kopyaladığımız veritabanı dosyalarını tekrar orijinal yerine geri kopyalıyoruz.

4. ‘Alter database open;’ diyerek veritabanı açılır.

2.2. Hot Backup:

  • Veritabanı açıkken, canlı olarak alınan yedekleme yöntemidir.
  • Hot Backup alabilmek için veritabanının ARCHIVELOG modda olması gerekiyor.

Veritabanı Arşiv Moda Alma:

  • İlk önce veritabanımızın arşiv modda olup olmadığını kontrol etmek için aşağıdaki sorguyu çalıştırıyoruz.

SQL> select log_mode from v$database;

  • Sonra veritabanını kapatıp mount modda açıyoruz.

SQL> shutdown immediate

SQL> startup mount

  • Veritabanımızı aşağıdaki gibi arşiv moda alıyoruz ve tekrar kontrol ediyoruz.

SQL> alter database archivelog;

  • Son olarak veritabanını aşağıdaki gibi açıyoruz.

SQL> alter database open;

  • Archive log dosyaların alınacağı yeni bir dosya oluşturuyoruz.

oracledb /home/oracle> mkdir arc_veridata

  • Arşiv dosyaların kaydedildiği dizini yeni oluşturduğum dizin olarak aşağıdaki gibi değiştiriyoruz.

SQL> alter system set log_archive_dest_1=’LOCATION=/home/oracle/arc_veridata’ scope=both;

  • Arşiv dosyaların nereye kaydolduğuna bakmak için aşağıdaki komutu çalıştırıyoruz.

Örnek Hot Backup:

  • Yedeği alınacak veritabanı aşağıdaki gibi yedek moduna alınır.

SQL> alter database begin backup;

  • İşletim sistemi üzerinden yedek alınacak veri dosyası yedek diskine kopyalanır.

oracledb /home/oracle> cp /u01/app/oracle/oradata/Veridatadb/*.* backup_veridatatest/

  • Daha sonra aşağıdaki gibi yedek modundan çıkarılır.

SQL> alter database end backup;

Hot Backup Restore Etme:

  • Veritabanı açıkken geri döneceğimiz veri dosyasını kullanım dışı (offline) yapılır.

SQL> alter database datafile ‘/u01/app/oracle/oradata/Veridatadb/users01.dbf’ offline;

  • Daha sonra kopyası alınan veri dosyası tekrar asıl yerine kopyalanır.

SQL> cp backup_veridatatest/users01.dbf /u01/app/oracle/oradata/Veridatadb/users01.dbf

  • Son olarak RECOVER komutuyla kurtarma işlemi yapılır. Ve veri dosyası tekrar online duruma getirilir.

SQL>recover datafile 6;

SQL> alter database datafile ‘/u01/app/oracle/oradata/Veridatadb/users01.dbf’ online;

2. RMAN (Recovery Manager)

  • RMAN kullanıcı yönetimli yedek alma ve kurtarma işlemini otomatikleştirmek için Oracle’ın sunduğu ücretsiz bir Backup-Restore aracıdır.
  • Oracle veritabanı sunucusunun bir özelliğidir ve ayrı bir kurulum gerektirmez.
  • Online ve tutarlı yedekler alabilmek için RMAN kullanmamız gerekiyor.
  • RMAN ile yedek alabilmek için veritabanının ARCHIVELOG modda olması gerekmektedir.

RMAN ile hangi dosya tiplerinin yedeği alınabilir?

— Data File’ları

— Control dosyaları

— Arşiv Log dosyaları

— Spfile Parametre dosyası

  • RMAN ile genellikle veri dosyaları ve arşiv log dosyalarının yedeği alınır.
  • RMAN veritabanı yedeğini Backupset olarak alırken sadece kullanılan blokların yedeğini alır.
  • Aşağıdaki komut ile RMAN tool’una bağlanabiliriz.

RMAN- Image Copy Backup Alma:

  • Bir veri dosyasının yedeğini almak için kullanılan yöntemdir.
  • Sıkıştırma kullanılamaz.
  • Veri dosyasının birebir kopyası alınır.
  • Sadece disk üzerine yedeklenebilir.
  • Backup geri dönülmeden veri dosyası olarak kopyalanabilir.
  • Boyutu veri dosyasının boyutu ile aynıdır.
  • Encryption(şifreleme) yapılmaz.
  • Restore işlemine gerek yoktur, Recover komutu kullanıldığı için daha hızlıdır.

RMAN- Backupset Backup Alma:

  • RMAN default olarak backupset olarak yedekleri alır.
  • Sıkıştırma kullanılabilir.
  • Sadece kullanılan bloklar yedeklenir.
  • Disk ve Tape üzerine yedeklenebilir.
  • Binary bir dosyadır.
  • Restore işlemi gerektirir.
  • Boyutu veri dosyasının boyutundan küçüktür.
  • Encryption(şifreleme) yapılabilir.

RMAN ile Neler Yapılabilir?

  • Veritabanını açık veya kapalı iken Full Backup alabiliriz.
  • Arşivlerin backup’larını alabiliriz.
  • Full Backup gibi Incremental Backup da alabiliriz.
  • SPFILE ve CONTROL File gibi dosyaların Backup’larını alabiliriz.
  • Herhangi bir sebepten dolayı bozulan (Corrupt) Tablespace ve Data File’ları online modda Recover edebiliriz.
  • Backup’ları compress(sıkıştırarak) olarak ve şifreleyerek alabiliriz.

RMAN- Incremental Level Backup:

  • Incremental Backup bir önceki backup dan sonraki değişen blokların backup’ını almayı sağlayan yöntemdir.
  • Block değişikliklerini izlemek için oracle Block Change Tracking dosyasını enable olarak set edilirse, Oracle değişen blokların yerini buradan bulur ve değişen blokların backup’ını çok hızlı bir şekilde alır.
  • Level 0 ve Level 1 olmak üzere iki seviye olarak kullanılmaktadır.
  • L0 backup full backup anlamına gelir ve aşağıdaki gibi backup alınır.

RMAN> backup incremental level=0 database;

  • L1 backup ise son alınan L0 backup’tan sonraki değişen blokların yedeğini alır.

RMAN> backup incremental level=1 database;

  • RMAN, level 1 yedek almak istediğimizde otomatik olarak daha önce level 0 yedek alınıp alınmadığına bakar.
  • level 0 yedek bulamazsa önce level 0 yedek alır ardından level 1 yedek alır. “backup database;” komutuyla tam yedek almış olsak bile RMAN level 0 yedeği arayacak ve bulamazsa önce level 0 yedeği alacaktır.
  • İki farklı Incremental Backup vardır.

1) Differential Incremental:

2) Cumulative Incremental:

1) Differential Incremental:

  • RMAN son level0 ve level1 yedekten sonra değişen blokları yedekler.
  • Differential Incremental varsayılan olarak kullanılır.
Differential Incremental

2.Cumulative Incremental:

  • RMAN son level0 backup’tan sonra değişen blokları yedekler. Yani level1 artan yedekleri yok sayar.

RMAN> backup incremental level=1 cumulative database;

Block Change Tracking File:

  • Incremental backup alma performansını arttırmak için kullanılan bir özelliktir.
  • Alınan son yedekten itibaren değişen blokların kaydını bir dosyada tutmasını sağlar.
  • Bir sonraki Incremental backup alırken tüm blokları tarayıp değişen blokları tespit etmek yerine, Block Change Tracking File dosyasını okuyarak sadece değişen blokların yedeğinin alınmasını sağlar.
  • Aşağıdaki gibi block change tracking aktif olup olmadığına bakabiliriz.
  • Aşağıdaki işlemleri yaparak bu dosyayı enable ediyoruz.

RMAN Konfigürasyonları:

  • RMAN Toolu Backup-Restore işlemlerini yaparken belirli konfigürasyonlara göre yapar.
  • Aşağıdaki komut ile RMAN konfigürasyonlarını görebiliriz.
  1. Retention Policy (Saklama Kuralı)
  • Alınan backup’ın saklanılma süresini belirler.
  • İki farklı seçenek ile kullanılır. (Redundancy-Recovery Window)

1.1. Retention Policy- Redundancy:

  • Default olarak gelir. Bu parametre ile RMAN ile alınan backup’ın saklama sayısını belirler.
  • Veritabanı kurulduğu zaman default olarak RMAN 1 tane backup saklar.
  • Bu parametreyi aşağıdaki gibi değiştirebiliriz.

1.2.Retention Policy- Recovery Window:

  • Backup’ların saklanacağı zaman aralığını belirtir.
  • Aşağıdaki gibi bu parametreyi değiştirebiliriz.

2. Backup Optimization:

  • Bu parametre ise backup’ı alınan ve değişiklik görmemiş blokların yedeklerinin tekrardan alınıp alınmamasını belirler.
  • Default olarak OFF olarak gelir, aşağıdaki gibi ON yapabiliriz.

3. Default Device Type:

  • Alınan Backup’ın disk ünitesine mi yoksa TAPE ünitesine mi alınacağını belirler.
  • Default olarak Disk üzerine backup alır.
  • Aşağıdaki gibi Tape üzerine backup aldırabiliriz.

4. Controlfile Autobackup:

  • Controlfile’ın her backup alındığı zaman otomatik olarak backup’ının alınmasını sağlar.
  • Aşağıdaki gibi bu parametreyi ON olarak değiştirebiliriz.

5. Controlfile Autobackup Format For Device:

  • Önceki parametre ile otomatik backup alınması sağlanan control file dosyasının backup’nın alınacağı yer ve device bilgisi belirlenir.
  • Aşağıdaki gibi bu parametreyi değiştirebiliriz.

6. Device Type Disk Paralellism:

  • Alınan backup’ın kaç paralellikte alınacağını belirler. Bu paralellik sayısı fiziksel CPU sayısından eşit veya küçük olması tavsiye edilir.
  • Aşağıdaki gibi bu parametreyi değiştirebiliriz.

7. Datafile Backup Copies:

  • Backup alınırken datafile’ların kaç tane kopyalanacağını belirtir.
  • Güvenlik ve tutarlılık açısından bu değerin 3 olması önerilir.
  • Aşağıdaki gibi değiştirebiliriz.

8. Archivelog Backup Copies:

  • Backup alınırken Archivelog’ların kaç tane kopyalanacağını belirtir.
  • Aşağıdaki gibi değiştirebiliriz.

9. Encryption For Database:

  • Bu parametre ile alınan backup’lar belirli algoritmalara göre şifrelenmesini sağlar.
  • Aşağıdaki gibi değiştirebiliriz.

RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

10. Compression Algorithm:

  • RMAN ile alınan backup’ları sıkıştırarak alabiliriz.
  • Bu özelliği kullanarak hem backup’ın kapladığı alanı azaltmış oluruz, hem de network üzerinden TAPE backup alınıyorsa network trafiğini azaltmış oluruz.
  • 11g ile gelen bir özellik. Oracle enterprise edition ile birlikte Advanced Compression lisasnına sahip isek kullanabiliriz.
  • Aşağıdaki gibi değiştirilebilir.

Tüm Veritabanın Backup’ını Alma

  • En basit yolu ile aşağıdaki gibi tüm veritabanı yedeğini alabiliriz.

RMAN> backup database;

Backup alınacak dizini ve formatını belirterek backup alma;

RMAN> backup as backupset database format ‘/home/oracle/rman/FULL_%U.rman’;

Backup alınacak dizini ve formatını belirterek backup alma;

RMAN> backup as backupset database format ‘/home/oracle/rman/FULL_%U.rman’;

Sık kullanılan Formatlar aşağıdaki gibidir.

Sıkıştırma yaparak backup alma;

RMAN> backup as compressed backupset archivelog all format=’/home/oracle/rman/arc_%U.rman’;

Level0 (Full) ve level1(Incremental) artan veya değişen yedeğini alma;

RMAN> backup incremental level=0 database;

Full backup ile birlikte arşiv log dosyalarının yedeğini alma;

RMAN> backup incremental level=0 database plus archivelog;

Veri dosyasını backup alma;

RMAN> backup datafile ‘/u01/app/oracle/oradata/Veridatadb/users01.dbf’;

CROSSCHECK İŞLEMİ:

  • Crosscheck komutu, RMAN deposunda bulunan yedeğin disk veya tape üzerinde fiziksel olup olmadığını kontrol eder.
  • Eğer dosya disk veya tape üzerinde fiziksel olarak yoksa (işletim sistemi üzerinden silinmiş olabilir) RMAN deposunda ilgili yedeği “EXPIRED” olarak işaretler. Sonrasında, “DELETE EXPIRED” komutuyla RMAN deposundan kullanılamaz halde olan yedek bilgileri siliyoruz.
  • Arşiv dosyalarını crosscheck ile kontrol etme:

RMAN> crosscheck backup of archivelog all;

  • Expired olan arşiv log dosyalarını silme:

RMAN> delete noprompt expired backup of archivelog all;

Control dosyası backup alma;

  • Control File otomatik yedekleme aşağıdaki gibi aktif edilir.

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

  • Aşağıdaki gibi yedek alabiliriz.

RMAN> backup current controlfile;

Spfile parametre dosyasını backup alma;

  • RMAN konfigürasyonlarında Control dosyası otomatik yedek almayı aktifleştirdiğimizde, her yedek almada SPFILE otomatik yedeklenir.
  • Manuel olarak aşağıdaki gibi yedek alabiliriz.

RMAN> backup spfile;

Not:

  • Pfile parametre dosyası kullanıyorsak (init<SID>.ora) yukarıdaki komutla yedek alınmaz. Almaya çalışılırsa hata alınır.
  • Bu durumda pfile paratmetre dosyası işletim sistemi üzerinden kopyalanarak yedek alınmalıdır.

Arşiv Log Dosyaları Backup Alma;

  • Arşiv log dosyalarını aşağıdaki gibi full backup ile alabiliriz.

RMAN> backup database plus archivelog;

Şimdi de aldığımız backupları farklı senaryolar ile restore ve recover işlemlerini gerçekleştirelim.

RMAN ile Restore — Recover

Datafile veya Tablespace Kurtarma İşlemi;

  • İlk önce kurtaracağımız tablespace’i ya“Offline” moda alıyoruz. Ya da veritabanını mount modda açıyoruz.
  • Daha sonra işletim sistemi üzerinde kurtarma işlemini yapacağımız veri dosyasının adını değiştirelim.
  • Daha sonra kurtarılacak datafile’ı ‘offline’ moda alıyoruz.

RMAN> sql ‘alter database datafile 6 offline’;

  • Sonra datafile restore edilir.

RMAN> restore datafile 6;

  • Sonra kurtarma işlemi gerçekleştirilir.

RMAN> recover datafile 6;

  • İşletim sistemi üzerinden recover işlemi yapılan datafile’ı kontrol ettiğimizde geri geldiğini görüyoruz.
  • Son olarak offline yaptığımız datafile’ı tekrar online yapıyoruz.

RMAN> sql ‘alter database datafile 6 online’;

Data Recovery Advisor (Veri Kurtarma Danışmanı): DRA

  • DRA, RMAN aracı ile kullanılarak veritabanıyla ilgili herhangi bir kalıcı arızayı teşhis etmemize yardımcı olmak için Oracle 11g ile sunulan bir özelliktir.
  • DRA aşağıdaki faydaları sunar;
  1. Gerçekleştirdiğimiz teşhis, analiz ve kurtarma adımlarını basitleştirir.
  2. Oluşan arızaları kolayca tespit edip kontrol etmemizi sağlar.
  3. İyileşme süresini azaltır.
  4. Kullanıcı kaynaklı hataları azaltır.
  5. Oluşan arızayı onarmak için bize öneriler, adımlar ve tavsiyeler sunar.
  6. Gerektiğinde bir onarım komut dosyası oluşturabilir. Bu dosyadaki scripti kullanarak arızayı giderebiliriz.
  • Hataları listelemek için aşağıdaki komutu kullanıyoruz.

RMAN> list failure;

  • Hataları onarma scriptini oluşturmak için;

RMAN> advise failure;

  • Hataları onarmak için aşağıdaki komutu kullanıyoruz.

RMAN> repair failure;

Data Recovery Advisor ile Kurtarma Örneği:

  • Veritabanı açıkken işletim sistemi üzerinden users01.dbf datafile’ın ismini değiştirelim.

mv users01.dbf users01.dbf_

  • DRA özelliğini kullanarak hataları listeleyelim.

RMAN> list failure;

Aşağıdaki gibi, bir veya daha fazla sistem dışı veri dosyasının medya kurtarmaya ihtiyacı var diye hata aldık.

  • Failure ID kullanarak bozulmalara ait detayları görebiliriz.

RMAN> list failure 202 detail;

  • Daha sonra alınan arızayı nasıl çözüleceğini bulmak için aşağıdaki komut ile DRA özelliğini kullanarak hatanın çözümünü içeren bir dosya alıyoruz.

RMAN> advise failure;

  • Aldığımız dosyanın içine baktığımızda arızanın nasıl çözüleceğiyle ilgili scriptler görüyoruz bu script’leri sırasıyla kullanarak arızayı kaldırabiliriz.
  • Son olarak aşağıdaki komut ile kurtarma işlemini gerçekleştiriyoruz

RMAN> repair failure;

Archive Log Dosyalarını Restore Etme:

  • RMAN, yedek kurtarma gerçekleştirirken Arşiv yedeklerini de otomatik döner.
  • Ancak bazı durumlarda belirli arşiv dosyalarına ihtiyaç duyabiliriz, bu nedenle aşağıdaki gibi arşiv dosyalarını geri dönebiliriz.

RMAN> restore archivelog all;

SPFILE Dosyasını Kurtarma:

  • Spfile dosyasının yedeğini alıyoruz.

RMAN> backup spfile format ‘/home/oracle/rman/users_%U.spfile’;

  • Spfile dosyasının ismini değiştiriyoruz.
  • Veritabanını açmaya çalıştığımızda parametre dosyalarının ismi değiştiği için aşağıdaki gibi hata aldık.
  • SPFILE dosyasını belli bir yedekten dönmek için, veritabanı startup force nomount modunda açıyoruz.
  • Daha sonra format belirterek aldığımız SPFILE backup’ını restore ediyoruz.

RMAN> restore spfile from ‘/home/oracle/rman/users_0s0hutpf_1_1.spfile’;

  • Son olarak veritabanımızı tekrar açıyoruz.

SQL> alter database open;

Control Dosyası Kurtarma:

  • Control dosyamızın yedeğini alıyoruz.

RMAN> backup current controlfile format ‘/home/oracle/rman/users_%U.ctll’;

  • Controlfile’ların isimlerini değiştirelim yani erişilemez duruma getiriyoruz.
  • Daha sonra veritabanını nomount force modda açıyoruz.

SQL> startup nomount force;

  • Daha sonra aldığımız controlfile backup’ını aşağıdaki gibi restore ediyoruz.

RMAN> restore controlfile from ‘/home/oracle/rman/users_0u0hv51i_1_1.ctll’;

  • Veritabanını açmaya çalıştığımızda aşağıdaki gibi hata alıyoruz.
  • Veritabanını recover işlemini gerçekleştiriyoruz.

RMAN> recover database;

  • Veritabanını resetlogs olarak açıyoruz.

SQL> alter database open resetlogs;

Not: Veritabanını resetlogs olarak açtığımız için ilk önce Veritabının Full yedeğini tekrar almalıyız. Çünkü Resetlogs kelimesi redo log dosyalarındaki tüm kayıtları siliyor ve SCN numaralarını sıfırlayarak veritabanını açıyor.

RMAN Complete (Tamamlı) Kurtarma:

  • Tüm veritabanının veya bir datafile’ın bozulmadan önceki son commit edilen transaction’lara kadar bütün işlemlerin kurtarılmasıdır.
  • Complete Kurtarma yapabilmek için aşağıdaki şartların sağlanması gerekiyor.

— Veritabanı arşiv log modunda olmalıdır.

— Veritabanının tam yedeği olmalıdır.

— Level 0 veya Level 1 incremental yedekten sonra üretilen arşiv log dosyaları olmalıdır.

— Online redolog dosyaları ulaşılabilir durumda olmalıdır.

  • Complate kurtarma gerçekleştirebilmek için gerekli olan yedek dosyalarını aşağıdaki komutla öğrenebiliriz.

RMAN> restore database preview;

  • Complete Kurtarma yapabilmek için alınan yedeği aşağıdaki gibi doğrulayabiliriz.

RMAN> restore database validate header;

  • Kurtarma işlemini test etmek için, kurtarılacak datafile ‘offline’ moda alınır. Aşağıdaki komut ile test yapılır.

RMAN> alter tablespace users offline;

RMAN> recover tablespace users test;

RMAN Tamamsız (Incomplete) Kurtarma:

  • Tamamlı kurtarmanın aksine burada bütün commit edilen transaction’lar kurtarılamaz.
  • Yani veritabanımız geçmiş bir t anına geri döndürülür. Bundan dolayı DBPITR olarak da bilinir.
  • Tamamsız kurtarma yapmak için bazı geçerli gerekçelerimiz olması gerekir.

— Eksik arşiv dosyalarımız olabilir.

— Veritabanımız ile birlikte online redolog dosyalarımız da bozulmuş (corrupt) olabilir.

— Ya da truncate edilen bir tablonun truncate öncesi verilerini alabilmek için.

DBPITR kullanabiliriz.

  • Tamamsız kurtarma, tamamlı kurtarmada olduğu gibi birbirini takip eden RESTORE ve RECOVER komutları ile gerçekleştirir.
  • Tamamsız kurtarma UNTIL kelimesi kullanılarak gerçekleştirilir.
  • Restore işlemini 3 farklı şekilde yapabiliriz.

1. Restore database until

2. Restore tablespace until

3. Flashback database

  • Geçmiş bir t anına aşağıdaki yöntemlerden birini kullanarak geri dönebiliriz.
  1. Zaman Tabanlı (Time-based) Kurtama

2. SCN Tabanlı (SCN-based) Kurtarma

3. Log Sıra Numarası tabanlı (Squence-based) Kurtarma

4. Geri Yükleme Noktası (Restore point) Kurtarma

1. Zaman Tabanlı (Time-based) Kurtama:

  • Until Time kelimesini kullanarak geçmiş t anına geri dönebiliriz.
  • Belirtilen zamana kadar commit edilmiş tüm veriler kurtarılır.
  • RMAN varsayılan zaman formatı olarak YYYY-MM-DD:HH24:MI:SS formatını kullanır.
  • TO_DATE fonksiyonunu kullanarak kendi belirlediğimiz tarih formatını kullanabiliriz.
  • İlk önce veritabanını mount modda açıyoruz.
  • Daha sonra UNTIL TIME kelimesi kullanılarak belirtiğimiz zamana restore işlemi yapıyoruz.

RMAN> restore database until time “to_date(‘30–12–2021 09:00:00’,’dd-mm-yyyy hh24:mi:ss’)”;

  • UNTIL TIME kullanılarak belirttiğimiz tarihe recover işlemi yapılır.

RMAN> recover database until time “to_date(‘30–12–2021 09:00:00’,’dd-mm-yyyy hh24:mi:ss’)”;

  • Son olarak veritabanını resetlog ile açıyoruz.

SQL> alter database open resetlogs;

2. SCN Tabanlı (SCN-based) Kurtarma:

  • Veritabanımızı kurtarmak istediğimiz t anının SCN (System Change Number) numarasını biliyorsak Until SCN kelimesini kullanarak geçmiş t anına geri dönebiliriz.
  • Belirttiğimiz SCN numarasına kadar kurtarma kurtarma işlemi gerçekleştirilir.
  • Belirtilen SCN numarasına gelindiğinde kurtarma işlemi otomatik sonlandırılır.
  • SCN numarasını aşağıdaki select sorgusu ile öğrenebiliriz.

SQL> select * from v$log;

  • Veritabanımızı mount modda açıyoruz.

SQL> startup mount;

  • Until SCN kullanılarak belirlediğimiz tarihe restore işlemi yapılır.

RMAN> restore database until scn 1798044;

  • Daha sonra recover işlemi yapılır.

RMAN> recover database until scn 1798044;

  • Son olarak veritabanını resetlog ile açıyoruz.

SQL> alter database open resetlogs;

3. Log Sıra Numarası tabanlı (Squence-based) Kurtarma:

  • En çok kullanılan tamamsız kurtarma yöntemidir.
  • Bir kurtarma işlemi yapıyorsak elimizde mutlaka arşivlog dosyaları olmalıdır.
  • Elimizde eksik arşiv log dosyaları varsa, kurtarma işlemini eksik arşiv log sıra numarasına kadar yapabiliriz.
  • Birden fazla arşiv log dosyalarımız olabilir, bu yüzden eksik arşiv log dosyasını tespit etmek zordur.
  • RMAN bu işlemi otomatik yapar ve eksik arşiv log dosyası için aşağıdaki gibi hata verir.

RMAN-0625: no backup of log thread 1 seq 58 lowscn 972141 found to restore

  • Veritabanını mount modda açıyoruz.

SQL>startup mount;

  • UNTIL SEQUENCE kullanılarak 58 sıra numaralı arşiv log dosyasına kadar restore işlemini yapılır.

RMAN> restore database until sequence 58;

  • Daha sonra UNTIL SEQUENCE kullanılarak 58 sıra numaralı arşiv log dosyasına kadar recover işlemini yapılır.

RMAN> recover database until sequence 58;

  • Son olarak veritabanı resetlog ile açılır.

SQL>alter database open resetlogs;

4. Geri Yükleme Noktası (Restore point) Kurtarma:

  • Flashback Database özelliği aktif etmişsek garantili geri yükleme noktası oluşturabiliriz.
  • SQL*Plus üzerinde de kendimiz geri yükleme noktası uluşturabiliriz.

SQL> create restore point after_dbca;

  • Geri yükleme noktası, veritabanımızın o anki SCN numarasına göre geri yükleme noktası oluşturulur.
  • V$RESTORE_POINT görüntüsünü sorgulayarak oluşturulmuş geri yükleme noktalarını görebiliriz.

Oluşturduğumuz geri yükleme noktasına geri dönmek istersek aşağıdaki gibi yapabiliriz.

  • Veritabanı mount modda açılır.

SQL> startup mount;

  • Until restore point kullanılarak restore işlemi yapılır.

Rman>restore database until restore point after_dbca;

  • Until restore point kullanılarak recover işlemi yapılır.

Rman> recover database until recover point after_dbca;

  • Son olarak veritabanı restlog ile açılır.

SQL>alter database open resetlogs;

Backup ve Restore işlemlerini böylelikle tamamlamış olduk.

Yazımı incelediğiniz için teşekkürler.

Bir sonraki yazılarımda görüşmek üzere.

LinkedIn hesabımdan bana ulaşabilirsiniz. HARUN ERDİNÇ

--

--