RMAN İLE YEDEK ALMAK

RMAN, aldığı yedekleri sadece kendisinin anladığı bir formatta tutuyor. RMAN’in oluşturduğu bir yedek setini (backupset) unzip edip dilediğiniz gibi kullanma şansına sahip değilsiniz. RMAN ile alınan bir yedek varsa; yedekten dönüş kısmı yine RMAN ile yapılmak zorunda.

Rman,aşağıdaki dosya tiplerinin yedeğini alabilmektedir.

  • Data file
  • Control file
  • Archive log
  • SPfile
  • Backup Piece(Daha önce alınmış yedek dosyaları)

RMAN,online rede log dosyalarını yedeklemez.Online redo log dosyalarını yedeklemenin en güzel yolu veritabanı yedeğinden sonra ‘alter system switch logfile’ komutunu çalıştırarak yeni bir arşiv dosyası oluşturmak ve sonrasında arşiv log dosyalarının yedeğini almak.

NOT : RMAN kullanmak istiyorsak veritabanınızın ARCHIVELOG modunda olması gerekmektedir.

NOT : RMAN yedeğinin nereye alınacağını belirtmessek default olarak FRA lokasyonu kullanır.

1.Tüm Veritabanının Yedeginin Alınması

RMAN ile bağlantı kurduktan sonra, aşağıdaki komutu girerek database’in tam bir yedeğini almanız mümkündür:

RMAN> backup database;

RMAN’de 0 ve 1 olmak üzere 2 yedek alma seviyesi vardır.0,tam(full) veritabanı yedeği alınacağını,1 ise artan(incremental) yedek alınacağını belirler.

RMAN> backup incremental level=0 database;

Tüm veritabanı ile birlikte archive log dosyalarının da yedeğini aşağıdaki komut ile alabiliriz.Bu komut ile bütün data file’leri,yedek başlama anına kadar olan tüm archivelog dosyalarını ve yedek esnasında oluşan tüm archive log dosyalarının yedeği alınır.

RMAN> backup incremental level=0 database plus archivelog;

RMAN veritabanı yedeğini yukarıdaki gibi(default) backupset olarak alırken sadece kullanılan blokların yedeği alınır.Bundan dolayı bir data file’ın boyutu yedek dosyasının(backup piece) boyutundan daha büyüktür.Çünkü backupset yedek alırken kullanılmayan blokların yedeğini almayız.RMAN aynı zamanda datafile’ı byte byte bire bir kopyasınıda yedek olarak alabilmektedir.Bu şekilde alınan yedekler image copy yedek olarak bilinir.

RMAN default olarak yedekleri backupset olarak alır.İstenilirse ‘AS BACKUPSET’ kelimesiyle özellikle yedeğin backupset olarak alınacağını aşağıdaki gibi belirtebiliriz.

RMAN> backup as backup database;

Image copy yedek almayı düşünüyorsak,komutumuz aşağıdaki gibi olmalıdır.

RMAN> backup as copy database;

Image copy ve backupset karşılaştırılması.

Image Copy

Backupset

Sıkıştırma kullanılmaz. Sıkıştırma kullanılabilir.
Data file birebir kopyalanır. Sadece kullanılan bloklar yedeklenir.
Sadece disk üzerinde yedeklenebilir. Disk ve tape üzerine yedeklenebilir.
Datafile’ın birebir kopyasıdır. Binary bir dosyadır.
Yedek geri dönülmeden datafie olarak kopyalanabilir. Yedek geri dönülmesi gerekir.
Boyutu datafile’ın boyutu ile aynıdır. Boyutu datafile’den küçüktür.

NOT : Bazı tablespace’lerimizin kritik veri içermediğini varsayalım ve full backup alırken bu tablespace’lerimizi yedek dışı bırakabiliriz.Bunun için bu tablespace’imizi exclude yapmamız lazım.

RMAN> CONFIGURE EXCLUDE FOR TABLESPACE deneme;

Artık veritabanı full yedeklerimizde deneme tablespace’imize ait data file’ler yedeği alınmayacaktır.

2.Tablespace Yedeginin Alınması

RMAN,tablespace bazında da yedek işlemi gerçekleştirebilir.Tablespace seviyesinde yedek aldığımızda,RMAN bu tablespace’e ait datafile’lerin yedeğini alır.Komutu girdiğiniz takdirde, rman belirtilen tablespace’lerin yedeğini alacaktır. Hangi datafile’lar,hangi tablespace’lere bağlı ya da tablespace backup mode’da mı diye bakmanız gerekmez. Bunu rman alt yapısında hâlledecektir. Örnegin ;

RMAN> backup tablespace system;
RMAN> backup tablespace system, users;

3.Data File Yedeginin Alınması

Datafile bazındada yedek alma işlemi yapabiliriz.Örnegin;

RMAN> backup datafile ‘/u01/app/oracle/oradata/ORCL/users01.dbf’;</pre>
RMAN> backup datafile 3;
RMAN> backup datafile 1,3,4,5;

Data file’ımızı image copy olarak yedeğini almak istersek de aşağıdaki gibi alabiliriz.

RMAN> backup as copy datafile 3;

4.Arşiv Dosyalarını Yedeklemek

Arşiv dosyalarını yedeklemek çok gerekli bir durum olarak görünmeyebilir. Çünkü arşiv dosyaları zaten yedek alma işlemi için kullanılan bir dosya türü. Ancak daha derli toplu olmasını, arşiv dosyalarını tarihe göre kontrol etmeyi ya da daha az yer kaplamasını isteyebilirsiniz. Bu sebeplerle arşiv dosyalarını yedeklemek uygun bir seçenek olabilir. Bunun için aşağıdaki gibi yedekleme yapabilirsiniz:

RMAN> BACKUP ARCHIVELOG ALL;

Yukarıdaki komut bütün arşiv dosyalarını yedekleyecektir. Fakat arşiv dosyalarının topyekün yedeklenmesine ihtiyaç duymuyor, sadece belirli bir güne kadar olan arşiv dosyalarını tutmak istiyorsanız, aşağıdaki gibi yedekleyebilirsiniz:

RMAN> BACKUP ARCHIVELOG FROM TIME='SYSDATE-7';

Sadece son 7 günlük döneme ait arşiv dosyaları saklanır. Bunun anlamı 1 hafta içinde dilediğiniz bir zamana arşiv dosyalarını kullanarak recover edebileceğinizdir.

Komutu daha farklı da kullanabiliriz; dilersek SCN ya da Sequence Number ile yedekleme yapabilir, yada 1 günden eski 3 günden yeni arşiv dosyalarını yedekleyebiliriz. Farklı kullanımları gösteren bazı örnekleri aşağıda bulabilirsiniz:

  • SCN’e göre yedekleme yapmak:
RMAN> BACKUP ARCHIVELOG UNTIL SCN = 320;
RMAN> BACKUP ARCHIVELOG SCN BETWEEN 205 AND 320;
  • Arşiv Dizi Numarasına göre yedekleme yapmak:
RMAN> BACKUP ARCHIVELOG UNTIL SEQUENCE = 501;
RMAN> BACKUP ARCHIVELOG FROM SEQUENCE 591;

Zamana göre yedekleme yapmak:

RMAN> BACKUP ARCHIVELOG UNTIL TIME 'SYSDATE-7';

 

RMAN> BACKUP ARCHIVELOG FROM TIME 'SYSDATE-30' UNTIL TIME 'SYSDATE-7';
  • Yedekledikten sonra, yedeklenen arşiv dosyalarını silmek:
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;

Özellikle son verilen örnek oldukça önemli. Çünkü son komutla birlikte arşiv dosyalarını yedekledikten sonra silme imkanını kullanıyoruz. Kullanıcı önsezisine gerek olmadan, yedeği alınan dosyanın gereksiz yere diskte bulunmasının önüne bu sayede geçebiliyoruz. Diğer ifadelerde DELETE INPUT koyduğunuz takdirde yedeklenen dosyaların silindiğini göreceksiniz.

5.Control File Yedeklemek

RMAN ile backup alırken, bazı dosyaların (örneğin controlfile ya da spfile gibi) otomatik olarak yedek alınmasını sağlayabilirsiniz. Aşağıdaki gibi bir giriş yaptığınız takdirde RMAN ile alınan her yedek esnasında, control file da yedeklenecektir.

RMAN> CONFIGURE CONTROLFILE ATUOBACKUP ON;

Yalnız yedeklendiği klasör $ORACLE_HOME/dbs şeklinde olacaktır. Yedeklerinizi doğal olarak farklı bir ortamda tutmak isteyebilirsiniz. Farklı bir konum için aşağıdaki gibi belirtmeniz gerekir:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/cf_%F.rman';

Dilerseniz manuel anlık bir backup almanız da mümkündür:

RMAN> BACKUP CURRENT CONTROLFILE;

Bunu sıklıkla yapmak gerekmiyor. Aldığınız yedeklerin içinde otomatik alındığına dikkat etmeniz yeterli.

6.SPfile dosyasının yedeğinin alınması

RMAN konfigürasyonlarında control dosyası otomatik yedek almayı aktif etmişsek her yedek alma esnasında SPfile’da otomatik olarak yedek alınır.Elle almak istersek yedegide aşağıdaki komutu kullanırız.

RMAN> BACKUP SPFILE;

NOT : RMAN ile yedek alirken FORMAT ve TAG kelimelerini kullanarak işimizi kolaylaştırabiliriz.FORMAT kelimesi alacağımız yedeğin lokasyonu ve ismini belirlememizde yardımcı olur.TAG kelimesi ise yedek alıdıgımız zaman neyin ne yedeği olduğunu karıştırmamak için kullanıdıgımız bir etikettir.Örnegin;

RMAN> backup database plus archivelog FORMAT '/u01/app/oracle/rman_%U' TAG='full_backup_deneme';

 

RMAN> backup as copy datafile 3 FORMAT '/u01/app/oracle/rman_%U' TAG='user_datafile_backup_deneme';

Artan(Incremental) Yedekler

RMAN’de 3 farklı incremental yedek yaklaşımı vardır.

  • Incremental level yedek
  • Aşamalı olarak güncellenen(Incrementally Updated) yedek
  • Blok degişikligi izleme(Block Change Tracking)

Incremental level yedek yaklaşımında RMAN sadece bir önceki yedekten sonra değişen blokları yedekler.Artan yedekler(Incremental backup) tüm veritabanına,tablespace veya datafile’e apply edilebilmektedir. Veritabanımızın bir kere tam(full) backupset yedeği alınır ve artan yedeklerle(incremental backup) tam yedeğimizi güncelleriz

Aşamalı olarak güncellenen(Incrementally Updated) yedek yaklaşımında ise image copy olarak alınan datafile yedekeleri,artan yedeklerle(incremental backup) ile beslenir.Veritabanımızın bir kere tam(full) image copy yedeği alınır ve artan yedeklerle(incremental backup) tam yedeğimizi güncelleriz.Böylelikle sürekli tam yedek zorunda kalmayız.

Blok degişikligi izleme(Block Change Tracking) ise artan yedeklerin(incremental backup) yedek alma performansını artırmak için kullanılan bir yöntemdir.Basit olarak işletim sistemi üzerindeki bir blok degişikligi izleme dosyasına son yedekten sonra değişen bloklar log olarak kaydedilir.RMAN incremental backup alırken bu dosyayı kullanarak değişen blokları çok hızlı bir şekilde tanımlayabilmektedir.

a.Artan Seviye(Incremental Level) Yedek Alma

Oracle 10g’den önce 0’dan 4’e kadar 5 farklı artan yedek seviyesi(level) varken,Oracle 10g ile sadece 2 seviye olarak(level 0,level 1) kullanılmaktadır.

Incremental level 0 yedek,Incremental level 1 yedek için bir taban oluşturmaktadır.Incremental level 0 yedek veritabanımızın full yedeğidir.Fakat aşağıdaki 2 komut full yedeği almasına rağmen bir nokta birbirinden faklıdır.

RMAN> backup database;

 

RMAN> backup incremental level=0 database;

RMAN, incremental level 1 yedek alındığında otomatik olarak daha önce level 0 yedek alınıp alınmadığına bakar.Şayet alınmamışsa otomatik olarak önce level 0 yedek alır.Önceden ‘backup database’ ile full yedek alınsa bile onu tanımaz.

Son alınan level 0 yedekten sonra sadece değişen blokların yedeğini aşağıdaki gibi alırız.

RMAN> backup incremental level=1 database;

2 farklı incremental backup vardır.Differential ve Cumulative yedek.Varsayılan olarak türü differential yedektir.

Differential incremental level 1’ yedek ile RMAN son level 1 veya level 0 yedekten sonra değişen blokları yedekler.

Differential Incremental Backup

Cumulative incremental level 1’ yedek ile RMAN,son level 0 yedekten sonra değişen blokları yedekler.Yani level 1 artan yedekleri yok sayar.

Cumulative Incremental Backup

Cumulative yedek alıyorsak komutumuza cumulative komutunu eklememiz gerekir.

RMAN> backup incremental level=1 cumulative database;

Rman yedekleri(incremental backup) veritabanımızı geri dönmek(restore) için değil veritabanımızı kurtarmak(recovery) için gereklidir.Yani restore ile recovery aynı şey değildir.Bir veritabanını restore yapmak için veritabanı full yedeğine ihtiyacımız vardır.Ama bir veritabanını son ana kadar kurtarabilmek için artan yedeklere ve archivelog dosyalarına ihtiyaç vardır.

Cumulative Incremental Backup Differential Incremental Backup
Son level 0 yedekten sonra değişen blokları yedekler. Son level 0 veya level 1 yedekten sonra değişen blokları yedekler.
Yedek dosya boyutu büyüktür. Yedek dosya boyutu küçüktür.
Yedek alma süresü uzundur. Yedek alma süresü kısadır.
Kurtarma işlemi daha çabuk gerçekleşir. Kurtarma işlemi daha yavaş gerçekleşir.
Daha fazla yedek alanına ihtiyaç vardır. Daha az yedek alanına ihtiyaç vardır.

b.Aşamalı Güncellenen(Incrementally Updated) Yedek

Image copy olarak alınan data file yedeklenir,artan yedeklerle(incremental backup) besler.Bu yöntemle 2 komutu arka arkaya çalıştırırız.İlk komutla level 1 yedek alınır(eger daha önceden level 0 yedek alınmamışsa önce level 0 yedek alınır),ikinci komutlada birinci komutla alınan level 1 incremental backup level 0 yedege apply edilir.

RMAN> backup incremental level 1 for recover of copy with tag ‘incremental_update’ database;
RMAN> recover copy of database with tag=‘incremental_update’;

c.Blok Degişikligini İzleme(Block Change Tracking)

Artan yedeklerin yedek alma performansını artırmak için kullanılan bir özelliktir.Veritabanımızda alınan son yedekten sonra değişen bloklar CTWR background process ile işletim sistemi üzerindeki binary bir log dosyasına kaydedilir.RMAN artan yedek alırken değişen blokları takip etmek için bu dosyayı okur.Böylelikle RMAN değişen blokları okumak yerine direk değişen blokları okur.

Blok degişikligi izleme veritabanımızda aşağıdaki gibi aktif edilebilir.

SQL> alter database enable block change tracking using file ‘/u01/app/oracle/oradata/change_tracking.f’;

Veritabanımızda önceden aktif edilip edilmediğini V$BLOCK_CHANGE_TRACKING view’ini sorgulayarak ögrenebiliriz.

Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe
Oracle World

Kaynaklar ; 
www.taliphakanozturk.wordpress.com(Oracle Database 11g R2 İleri Veritabanı Yönetimi)
www.cagataycebi.com
www.uguroracle.blogspot.com
Robert Freeman ve Matthew Hart ”Oracle RMAN 11g Backup and Recovery”

RMAN 1
RMAN 2
RMAN 3

Loading