Home / MAKALELER / Veri Tabanı / Oracle RMAN ( Recovery Manager ) -4

Oracle RMAN ( Recovery Manager ) -4

Merhaba,

Bu yazımda Oracle ın mükemmel özelliklerle donatılmış Backup & Restore tool u olan RMAN ( Recovery Manager ) i anlatmaya devam edeceğim. Bugün RMAN ile Restore etme işlemlerini anlatacağım.

34521145

 

Veritabanı aniden crash olduğu zaman en son alınan Full backup ı restore edip Database i Recovery etmemiz gerekmektedir. Bu operasyonda en önemli olaylardan birisi Veritabanımızın beyni olan Control File ın zarar görüp görmediğidir. Eğer şuan kullanılan Control File ımız zarar görmüşse daha önceki yazılarımda bahsetttiğim autobackup modda olan Control file dosyamızın Backup ını da Restore etmemiz gerekecektir. Eğer zarar görmemişse hemen son backup ı restore edebiliriz. Çünkü Son backup ın ilgili bilgileri şuanki Control file dosyamızda mevcuttur.

1 Nolu Senaryo:

Control File ımızın zarar görmediği senaryosu üzerinden gidersek Son Backup ı aşağıdaki adımlarla Restore edip recover ederiz.

1. Veritabanı Mount modda açılır. Restore işlemi sadece bu modda yapıldığı için veritabanı Mount modda aşağıdaki gibi açılır.

bash-4.1$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Mon May 27 09:06:58 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  534462464 bytes

Fixed Size                  2230072 bytes

Variable Size             339740872 bytes

Database Buffers          184549376 bytes

Redo Buffers                7942144 bytes

Database mounted.

SQL>

2. RMAN tooluna Bağlanıp Restore işlemi başlatılır.

bash-4.1$ rman target /

Recovery Manager: Release 11.2.0.3.0 – Production on Mon May 27 09:10:09 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: TESTDB (DBID=2602199602)

RMAN> restore database;

3. Restore işlemleri başarılı bir şekilde gerçekleştikten sonra Veritabanı aşağıdaki gibi Recover edilir.

RMAN> recover database;

4. Database Recover edildikten sonra aşağıdaki gibi resetlogs parametresiyle veritabanı tekrardan açılır.

RMAN> alter database open resetlogs;

Resetlogs parametresini kullanarak Recovery işlemi sonrasında veritabanı açılırken Oracle a yeni Control file olarak Backup Controlfile ını kullanmasını söylüyoruz. Veritabanı açıldıktan sonra Oracle, Backup Control File ı kullanmaya başlayacak öte yandan o anki Online redolog lar Arşivlenip içerikleri Oracle tarafından silinecek ve Log Sequence Number değeri 1 e çekilecektir. Böylece Backup dan Restore operasyonu sonrası veritabanı tutarlı bir hale gelmiş olacak.

2 Nolu Senaryo:

Şimdi yukarda bahsettiğim diğer senaryoya geçelim. Yani Database Crash oldu ve kontrol ettiğiniz zaman veritabanınızın Beyni olan Control File da zarar görmüş. Bu durumda veritabanı nasıl restore edilir ona bakalım. Basitçe özetleyip aşağıda bu operasyonu adım adım göstereceğim. Öncellikle daha önceden de belirttiğim gibi veritabanına ait Full backup ınız var ve Control file ınızın kendisi yada Backup ı yoksa bu Full backup dan dönmeniz mümkün değildir çünkü restore için gerekli tüm bilgiler bu dosyanın içinde mevcuttur. Bu yüzden elimizde son backup alınan zamandaki bir control file ın kendisi yada backup ının olması gerekiyor. Elimizde olmadığını düşünüp Backup ı alınmış ilgili Control file ı da Restore edip veritabanımızın Restore işlemini başlatıyoruz. Bu işlemin adımları aşağıdaki gibidir.

1. Veritabanı Nomount modda açılır.

bash-4.1$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Mon May 27 09:30:09 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area  534462464 bytes

Fixed Size                  2230072 bytes

Variable Size             339740872 bytes

Database Buffers          184549376 bytes

Redo Buffers                7942144 bytes

SQL>

2. Veritabanımızın DBID numarasını set ediyoruz. Bu değer veritabanı açıkken aşağıdaki sorguyla elde edilir.

SQL> select dbid from v$database;

 

DBID

———-

2152350199

 

RMAN> set dbid = 2152350199

3. DBID parametresi set edildikten sonra Control File dosyası aşağıdaki komut ile restore edilir. Aşağıdaki komut çalıştırıldığında RMAN otomatik olarak en son Backup ı alınmış Control File dosyasını restore eder.

RMAN> restore controlfile;

4. Control file Restore işlemi başarılı bir şekilde gerçekleştikten sonra Yukarda anlattığım 1 Nolu Senaryonun adımları bu adımdan itibaren aynen uygulanır.

RMAN in esnek ve mükemmel özelliklerle donatılmış olduğunu belirtmiştik şimdi o özelliklerden birisini anlatayım. RMAN ile alınan bir backup dan sonra Veritabanını istediğimiz bir tarih ve saate Restore edebiliriz. Bunu aşağıdaki komut ile sağlarız.

RMAN> RESTORE DATABASE UNTIL TIME “TO_DATE(‘2013-05-27 16:45′,’YYYY-MM-DD HH24:MI’)”;

RMAN> RECOVER DATABASE UNTIL TIME “TO_DATE(‘2013-05-27 16:45′,’YYYY-MM-DD HH24:MI’)”;

Şimdi Veritabanına ait Archivelog Backup ların ihtiyaç halinde restore edilmesini gösterelim. Arşivlerin Restore u işlemine en çok Full backup dan döndükten sonra geri kalan aralığı kapatmak için ihtiyaç duyarız. Örneğin hafta içi p.tesi öğleden sonra database crash oldu ve en son full backup ise pazar gecesine ait. Bu durumda Veritabanını Full backup a restore ettikten sonra pazar gecesi ile p.tesi öğleye kadar ki süreyi ise arada alınan archivelog backup lar restore edilerek giderilir. Archivelog ların Restore işlemi aşağıdaki gibi gerçekleştirilir.

Tüm arşivleri Restore etmek için aşağıdaki komut kullanılır.

RMAN> RESTORE ARCHIVELOG ALL;

Belli bir sequence aralığındaki Arşivleri restore etmek için aşağıdaki komut kullanılır.

RMAN> RESTORE ARCHIVELOG FROM SEQUENCE 1453 UNTIL SEQUENCE 2013;

Belirli sequence numarasından itibaren alınan archivelog backup ları restore et diyebilmek için aşağıdaki komut kullanılır.

RMAN> RESTORE ARCHIVELOG FROM LOGSEQ= 1453;

Bunların dışında belirli zaman aralığındaki arşivleri restore et diyebilmek için aşağıdaki komut kullanılır.

RMAN> RESTORE ARCHIVELOG FROM TIME ‘SYSDATE-10’ UNTIL TIME ‘SYSDATE-1’;

Belirli SCN aralığında oluşan Arşivleri restore etmek için aşağıdaki komut kullanılır.

RMAN> RESTORE ARCHIVELOG SCN BETWEEN 1453 and 2013;

Full Backup, Archivelog Backup dan Restore etmeyi gösterdikten sonra şimdide backup ı alınmış Tablespace ve Datafile ların Restore edilmesini göstereceğim. Tablespace yada Datafile ları restore ederken database online modda olabilir ancak ilgili tablespace yada datafile offline modda olmalıdır. Örnek olarak Bozulan DATA01 adlı tablespace sin ve 1453 nolu datafile ın Backup larını Restore edelim.

DATA01 adlı tablespace restore edilmeden önce aşağıdaki gibi önce offline moda çekilmelidir.

SQL> alter tablespace DATA01 offline;

Tablespace altered.

Tablespace offline moda çekildikten sonra aşağıdaki gibi restore edilip recover edilir.

RMAN> restore tablespace DATA01;

RMAN> recover tablespace DATA01;

Tablespace düzgün bir şekilde restore edildikten sonra bu tablespace aşağıdaki komut ile online moda alınır.

SQL> alter tablespace DATA01 online;

Tablespace altered.

Tablespace restore unu gösterdikten sonra şimdide 1453 nolu datafile ın restore unu göstereceğim.

Datafile ı restore etmek için ilk olarak datafile aşağıdaki komut ile offline moda çekilir.

SQL> alter database datafile 1453 offline;

Bu datafile aşağıdaki komut ile son backup dan restore edilip recover edilir.

RMAN> restore datafile 1453;

RMAN> recover datafile 1453;

Datafile düzgün bir şekilde restore edildikten sonra aşağıdaki komut ile online moda çekilir.

SQL> alter database datafile 1453 online;

Bunun dışında veritabanının parametre dosyası olan ve veritabanı için önemli bir yer tutan SPFILE ( Server Parameter File ) dosyasınında alınmış olan backup ından ihtiyaç olduğu zaman aşağıdaki komut ile dönebilirsiniz.

RMAN> restore spfile from autobackup;

Böylece bir yazının daha sonuna gelmiş bulunmaktayım bir sonraki yazıda görüşmek dileğiyle esen kalın.

Mehmet Salih Deveci

Oracle Veritabanı Yöneticisi

About Mehmet Salih Deveci

Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünden 2011 yılında mezun oldu. C#, ASP.NET ve Oracle, SQL Server Veritabanları Teknolojileri Alanlarında Çalışmalarını Sürdürmektedir. Şuan Türk Telekom A.Ş de Veritabanı Yöneticisi olarak Kariyerini Sürdürmektedir.

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın