Anasayfa » RMAN ile Yedekten Dönme ve Kurtarma
RMAN ile Yedekten Dönme ve Kurtarma
RMAN’in ne olduğunu ve nasıl yedek alınacağını öğrenmiştik. İlgili yazıya
https://gokhanata.com/2021/08/rman-nedir-ve-nasil-yedek-alinir/
linkinden ulaşabilirsiniz. RMAN ile Full yedekten dönme, Arşiv Log dosyalarını dönme, İstediğimiz bir zamana (Until Time) dönme ve Tablespace’lerin recover edilmesi gibi birçok işlemi gerçekleştirebiliriz. Şimdi yedekten nasıl dönebileceğimize adım adım bakalım.
Veri tabanının herhangi bir nedenden dolayı çöktüğünü düşünelim. Bu durumda yapılacak olan şey önceden alınan yedeklerden veri tabanını restore(geri yükleme) ve recovery(kurtarma) yapmaktır. Restore en temel ifadeyle, yedekte yer alan dosyaları veri tabanındaki ilgili klasörlere kopyalama işlemidir. Recovery ise, veri tabanını çökmeden önceki son noktaya getirme işlemidir.
Öncelikle aldığımız her yedekten sonra yedeklerin çalışıp çalışmayacağını kontrol etmemiz gerekir. Aşağıdaki sorguyla bu kontrol sağlanabilir.
RMAN>
restore database validate;

Bu kontrolü sağladıktan sonra restore işlemine başlayabiliriz.
Full Restore & Recover (Full Yedek Dönme)
Veri tabanını restore edebilmek için mount moda çekmek gerekir. Mount moda çektikten sonra sırasıyla restore ve recover işlemleri gerçekleştirilir.
RMAN>
startup mount
RMAN>
restore database;
RMAN>
recover database;
Yukarıdaki ekran görüntülerinden de anlaşılacağı üzere restore database dediğimizde herhangi bir TAG belirtmediğimiz için en son aldığımız yedekten restore işlemini gerçekleştirdi. Restore işlemi bittikten sonra recover database komutu ile veri tabanı recover işlemi tamamlandı.
Farklı bir yedekten dönmek istersek FROM TAG parametresini kullanabiliriz.
RMAN>
RESTORE DATABASE FROM TAG='TagAdı';
Until Time Recover
Veri tabanının bazı durumlarda belli bir zamana döndürülmesi gerekebilir. Bu işlemi gerçekleştirmek için until time komutu kullanılır. Ancak restore işlemi için, dönmek istediğimiz zaman , son yedek aldığımız zamandan ileri olmalıdır. Örneğin son yedek aldığımız tarih 21/08/2021 00:00 olsun. Bu durumda 20/08/2021 23:59’a dönemeyiz. Ayrıca until time komutu ile restore işlemini yapabilmek için arşiv log dosyalarının mevcut olması gerekmektedir.
RMAN> restore database until time "TO_DATE('2021/08/26 12:00' , 'YYYY-MM-DD HH24:MI')";
RMAN> recover database until time
"TO_DATE('2021/08/26 12:00' , 'YYYY-MM-DD HH24:MI')";
Tablespace & Datafile Restore-Recover
Tablespace ya da veri dosyalarında bozulma meydana geldiği durumlarda tablespace ve datafile’lar kurtarılabilir. Bu tür durumlarla karşılaştığınız zaman veri tabanını kapatmadan kurtarma işlemini gerçekleştirebilirsiniz. Ancak burada önemli olan nokta kurtarmaya çalıştığınız veri dosyası ya da tablespace’in offline moda çekilmesi gerektiğidir. Kurtarma işlemi birden fazla yöntemle yapılabilir. Bunlar dosya yolunu belirtme, dosya numarasını belirtme ve tablespace belirtme olarak açıklanabilir.
Şimdi veri tabanındaki tablespace ve veri dosyalarını sorgulayalım ve önceki aldığımız yedeklerden kurtarma işlemini gerçekleştirelim.
SQL>
Select file_id,file_name,tablespace_name,online_status from dba_data_files;
sorgusunu kullanarak restore ve recover için gerekli bilgileri öğrenebiliriz.
Yukarıdaki tablespace’lerin tamamı online modda olduğundan, recover edeceğimiz tablespace ya da veri dosyasını offline moda çekmeliyiz. Dosya numarası kullanarak tbsata.dbf veri dosyasını restore ve recover edelim.
Datafile Recover
Öncelikle ONLINE olan data file’ı OFFLINE moda çekilir.
SQL> Alter database datafile 8 OFFLINE;
FILE_ID’si 8 olan tbsatagokhan.dbf dosyasını offline moda çektik.
Yukarıdaki komutla data file OFFLINE moda geçmeden önce RECOVER moda geçer. Recover işlemi bittikten sonra data file offline moduna geçmiş olur.
Data file recover moda geçtikten sonra RMAN ile restore ve recover işlemleri gerçekleştirilebilir.
RMAN>
restore datafile 8;
RMAN>
recover datafile 8;
Recover işlemi tamamlandıktan sonra datafile’ın durumu sorgulanırsa OFFLINE olduğu görülür.
Datafile’ı dosya numarası ile ONLINE duruma getirmek için aşağıdaki komut kullanılır.
Dosya yolu kullanarak recover işlemi aşağıdaki komutlarla gerçekleştirilir.
RMAN> Restore datafile '/u01/app/oracle/oradata/oradev/tbsatagokhan.dbf';
RMAN>
Recover datafile '/u01/app/oracle/oradata/oradev/tbsatagokhan.dbf';
Tablespace Recover
RMAN>
Restore tablespace TBSATAGOKHAN;
RMAN>
Recover tablespace TBSATAGOKHAN;
Control File Restore & Recover
Çok zor bir olasılık olsa da Control File’da bozulma meydana gelmiş olabilir. Bu durumda RMAN ile alınan control dosyalarının yedekleri kullanılarak recover işlemi gerçekleştirilir. Recover işlemi autobackup ya da dosya yolunu göstereceğimiz backup dosyasından yapılabilir. Bu işlemi gerçekleştirebilmek için veri tabanının nomount modunda olması gerekmektedir. Ayrıca çok önemli bir nokta da DBID‘nin set edilmesi gerektiğidir. DBID’yi şu şekilde sorgulayabiliriz.
SQL> Select DBID from v$database;
Bu sorgunun sonucunu set edip restore işlemine devam edebiliriz.
RMAN> startup nomount;
RMAN> SET DBID='DBID numaranız';
RMAN> restore controlfile autobackup;
Bu işlemden sonra veri tabanı önce mount moduna alınır daha sonra da open ile açılır.
İstediğimiz bir backup dosyasından restore edilmesini istiyorsak;
RMAN> startup nomount;
RMAN> SET DBID='DBID numaranız';
RMAN> restore controlfile from '/xxx.rman';
Archive Log File Restore & Recover
Arşiv log dosyaları birden farklı şekilde restore edilebilir. Bunlar SCN(System Change Number), ALL, Sequence Number vb. yöntemlerdir. Restore işlemleri aşağıdaki şekilde gerçekleştirilir.
SCN Kullanarak Dönme
RMAN> restore archivelog SCN between 111111 and 111113;
Full Dönme
RMAN> restore archivelog all;
Comments are closed.
Thanks for your blog, nice to read. Do not stop.
Thanks, I hope its helps you.