Merhaba arkadaşlar bu yazımda RMAN’den bahsedecegim.RMAN ile ilgili teknik yazıya geçmeden önce bu yazıyı hazırlarken çok fazla yararlandıgım ve çok fazla yararını gördügüm dökümanlardan bahsetmek istiyorum.Bunlardan birincisi Talip hoca’nın(Talip Hakan Öztürk) ”Oracle Database 11g R2 İleri Veritabanı Yönetimi” adlı çok yararlandıgım ve çok begendim kitap,kitap türkçe ve çok güzel anlatılmış herkese tavsiye ederim  ve bu yazı aracılıgı ile de böyle bir kitap için Talip hoca’ya teşekür ederim.İkinci kaynak olarak Çagatay hoca’nın(Çagatay Çebi) RMAN ile ilgili makalesi,Çagatay hoca her zaman takip ettigim sınırlı türkçe bloklardandır ve makalelerini çok açıklayıcı ve yararlı bulurum herkese tavsiye ederim. Üçüncü olarak Ugur hoca’nın(Ugur İnce) RMAN ile ilgili makalesinden çok yararlandım ve özelliklede RMAN’ın avantajları kısmını okumanızı tavsiye ederim.Dördüncü olarak da RMAN ile ilgili daha ayrıntılı bilgilere ihtiyacınız olursa benimde yararlandıgım Robert Freeman ve Matthew Hart’ın yazdıgı ”Oracle RMAN 11g Backup and Recovery” adlı kitabını öneririm RMAN’i baştan aşagı anlatan güzel bir kitap.

RMAN (Recovery Manager), Oracle’in sunduğu bir yedek alma ve kurtarma aracıdır. RMAN aracı Oracle veritabanı 8 ile birlikte gelmeye başlamıştır ve her veritabanı versiyonu ile birlikte güçlenmiştir. RMAN’i diğer yöntemlere göre farklı kılan; DBA üzerindeki iş yükünü hafifletmisidir.RMAN yedek almayla ilgili birçok işi otomatik yapabilme imkanı sunar.

RMAN (Oracle Recovery Manager) Oracle tarafından ücretsiz olarak (bundle) sunulan ve veritabanızın yedeklenmesi sağlayan bir yazılımdır. Bu yazılımı hem CLI yani command line ortamından kullanabileceğiniz gibi hem de Enterprise Manager üzerinden de çalıştırabilirsiniz. RMAN aracını veritabanımızın çalıştığı sunucu üzerinde kullanabileceğimiz gibi client bilgisayar üzerinden de kullanabiliriz.Client üzerinden kullanıyorsak dikkat etmemiz gereken nokta RMAN bağlantılarının dedicated olmasıdır.Bunun için de TNSNAMES.ORA dosyasında SERVER=DEDICATED olarak set edilmelidir.

RMAN’ın diğer backup yöntemlerine göre avantajları :

  • Kullanılmayan blokların atlanması: Bir tabloda daha önceden yazılı olmayan bloklar (High Water Mark(HWM) üstünde kalan bloklar gibi) yedeklenmez. Geleneksel yedeklemede hangi bloğun kullanıldığı bilinmediğinden bu atlama işi olamaz.
  • Yedeğin sıkıştırılması(Compression): Oracle 11g ile gelen bir özelliktir.Alınan yedekleri isteğe bağlı olarak sıkıştırabiliriz.
  •  Veritabanı yedeklerini açma: Backup alma işlemlerini daha basite indirger. Örneğin hotbackup almak için tablespace’leri backup mode’a çekeyim; sonra tekrar normal mode’a alırım gibi dertleriniz olmaz.alter tablespace …. begin/end backup cümleleri kullanmaya gerek kalmadan tablespace yedeklemesi kolayca yapılabilir.
  • Gerçek artalan(incremental) yedekleme: Geri kurtarma esnasındaki süreyi kısaltmak için en son yedekten sonraki değişmeyen yedekler yedek setine yazılmaz. Böylece, CPU süresi, I/O süresi ve disk alanında performans sağlanır. RMAN, geri yükleme ve kurtarma işlemlerinde artalan güncelli yedekleri kullanır.
  • Blok seviyesinde geri kurtarma: Downtime süresini düşürmek için Oracle blok seviyesinde geri kurtarmayı destekler. Bir tablespace, sadece bozulmuş blokların onarma işlemi seviyesinde kapalı kalmaz.
  • Çoklu I/O kanalları: Veritabanı server’imizin donanım altyapısına göre RMAN birden fazla kullanabilir bu da bizim işlem performansımızı arttırır.
  • Platform bağımsız: RMAN her türlü donanım ve işletim sistemi üzerinde aynı komutlarla kullanılır. RMAN sayesinde işletim sisteminden bağımsız yani cross-platform ‘da çalışabilir. Örnek olarak Windows tabanlı bir veritabanı sunucusunda alınan RMAN backupları rahatlıkla Linux/Unix platformundaki veritabanı sucunularına veya tersi şekilde aktarılabilir.
  • Kataloglama: Tüm RMAN kayıtları hedef bir veritabanı kontrol dosyası içinde kayıt edilir. Manuel takibe gore avantaj sağlar.Kataloglama ile merkezi tek bir noktadan düzinelerce veritabanına bağlanabilir; her birini yedekleyebilirsiniz. Merkezi kontrol söz konusudur; tek tek her makinede script yazmanız gerekmez. Bir sunucu belirler, her şeyi oradan yapabilirsiniz.
  • Şifreli Yedekleme: Oracle 11g sürümü ile yedekleri şifreli olarak saklama imkanı vardır.
  • Arşiv üretmez : RMAN hotbackup şeklinde veritabanı açıkken alınan yedeklerde ekstra arşiv üretmez.(Gerçekten ekstra arşiv üretmiyor ama yüklü işlemler söz konusu ise hız düşüşü yaşanıyor.)
  • RMAN Konfigurasyonları : RMAN konfigürasyonlarını yapılandırarak yedekleme stratijimizi otomatikleştirebildiğimiz gibi işlemlerimizi tekrar tekrar yapmamızı engeller.

RMAN ile Veritabanına Baglanmak

RMAN ile veritabanına bağlanmak için aşağıdaki komutu, Shell(command line) üzerinden çalıştırmak gerekiyor :

rman target /

Burada önemli olan nokta, hangi işletim sistemi kullanıcısı ile bu komutu çalıştırıyorsanız, o kullanıcıya ait veritabanıyla ilgili çalışacağınızdır. Eğer doğru işletim sistemi kullanıcısı ile komut girilmezse, yanlış bir veritabanı yedeği alırsınız. Şayet yanlış veritabanıyla ilgili çalışma yapmadığınızdan emin olmak isterseniz, TNS adını da kullanabilirsiniz:

rman target sys/password@ORCL;

ORCL, tnsnames.ora dosyasında tanımlıdır ve yedek alacağımız veritabanını temsil eder.

RMAN Konfigürasyonarı

Oracle veritabanı 8.1 öncesi her yedek alma işleminde run{} bloğu içerisinde istenilen RMAN konfigürasyon parametreleri yazılmak zorundaydı.Oracle 9i ile birlikte bu iş merkezileştirildi ve set edile RMAN konfigürasyonları bütün yedek alma işlemlerinde kullanılabilir oldu.RMAN ile bağlanıldıktan sonra aşağıdaki gibi bütün konfigürasyon parametrelerini “show all” komutuyla görebiliriz.

RMAN>show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_ORCL.f'; # default

NOT : Burada set edeceğimiz konfigürasyonlar bütün yedek işlemlerinde kullanılabilecektir.Degiştirilen konfigürasyonlar veritabanında V$RMAN_CONFIGURATION view’i sorgulanarak görüntülenebilir.

SQL> SELECT * FROM v$rman_configuration;

NOT : Set edilen bir konfigürasyonu varsayılan haline geri döndürmek istediğimizde aşağıdaki gibi cümlenin sonuna CLEAR yazmamız yetelidir.

RMAN>CONFIGURE DEVICE TYPE DISK CLEAR;
RMAN>CONFIGURE RETENTION POLICY CLEAR;

1.Saklama Kuralı(RETENTION POLICY)

1.1.Reducancy

Reducancy geçmişe yönelik kaç yedek saklanılacağını belirler.Örnegin reducancy 3 set edildiğinde,RMAN geçmişe yönelik 3 yedek saklar,4.yedek alındığında 1.yedegi obsolete olarak işaretler.

RMAN>CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

Şayet FRA alanında yer kalmazsa RMAN bunu otomatik algılar ve obsolete yedeği siler.FRA alanını kullanmıyorsak aşağıdaki komutla manuel olarak da obsolete işaretlenmiş yedekleride silebiliriz.

RMAN>DELETE OBSOLETE;

NOT : Default olarak Retention Policy parametresi reducany 1 olarak gelir.

1.2.Recovery Window

Recovery window,geçmişe yönelik saklanacak yedek sayısından ziyade yedeklerin saklanılacağı zaman aralığını belirler.Örnegin recover window 3 gün set edildiğin de 3 günden eski yedekler obsolete olarak işaretlenir.

Recovery windows’da özel bir durum vardır;RMAN 3 gün set edildiğinde, 3 günlük geri dönmeyi garanti eder.Bunu bir örnekle açıklamak gerekirse;elimzde 4 yedegimiz olsun ve yedek alınma tarihleri 16 mayıs,18 mayıs,21 mayıs ve 23 mayıs olsun.Recovery Window 3 set edildiğinde normalde 16 ve 18 mayıs obsolete olması gerekir(23-3=20 yani 20 mayıs ve öncekiler obsolete olmalıdır).Ama 20 mayısa geri dönülmek istendiğinde 18 mayıs yedeğinin olması gerektiğini RMAN otomatik algılar ve 18 mayısı obsolete olarak set etmez.

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

2.Yedek Optimizasyonu(BACKUP OPTIMIZATION)

Bu yapılandırma ON olması halinde, yedekleme optimizasyonu sayesinde daha önceden yedeği alınmış ve sonraki yedekte bir değişikliğe uğramamış olan objeler yedeklenmez.Bunun için aşağıda ki kriterleri göz önünde bulundurur.

Dosya Tipi Aynı dosya olup olmadığını anlama kriteri
Data File Aynı DBID,checkpoint SCN,ilk oluşturulma SCN,resetlogs SCN ve zaman
Arşiv redo log Aynı thread,sequence numarası,resetlogs SCN ve zaman
Backup set Aynı backup set recid si ve izlidir.
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

NOT : Bu parametrenin default değeri OFF olarak set edilmiş gelir.

3.Yedegin alınacağı Ortamı Belirleme(DEFAULT DEVICE TYPE)

Tape ve disk olarak 2 farklı ortama yedek alınabilmektedir.Disk için alınmasını istiyorsak aşağıdaki komutu gireriz.

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

Tape kartuşa yedek alıyorsak aşağıdaki gibi yapılandırabiliriz.

RMAN>CONFIGURE DEFAULT DEVICE TYPE TO SBT;

NOT : Default olarak bu parametrenin değeri disk’tir.

4.Control ve SPfile Dosyası Otomatik Yedeğinin Alınması(CONTROLFILE AUTOBACKUP)

Control dosyasının ve spfile’ın her yedek alma esnasında otomatik yedeklenip yedeklenmeyeceğini buradan set edebiliriz.

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
<em id="__mceDel">RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

5.Control Dosyası Yedek Yerinin Belirlenmesi(CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK)

Control dosyası yedeği default olarak FRA alanına benzersiz bir isimle kaydedilir.( CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default)%F’nin karşılığı c-‘IIIIIIIIII-YYYYMMDD-QQ’ şeklindedir.Burada ‘IIIIIIIIII’ DBID değerini,’YYYYMMDD’ tarihi ve ‘QQ’ ise hex decimal bir yedek id değeridir

Biz istersek aşağıdaki gibi farklı yerlere farklı isimlerle alabiliriz.

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "/u01/app/oracle/rman_bckp_%d_%F.bck";
Format Description
%a Current database activation id
%A Zero-filled activation ID
%c The copy number of the backup piece within a set of duplexed backup pieces.bMaximum value is 256
%d Database name
%D Current day of the month from the Gregorian calendar in format DD
%e Archived log sequence number
%f Absolute file number
%F Combines the DBID, day, month, year, and sequence into a unique and repeatable generated name
%h Archived redo log thread number
%I DBID
%M Month in the Gregorian calendar in the format MM
%n Database name, padded on the right with x characters to a total length of eight characters
%N Tablespace name. Only valid when backing up datafiles as image copies.
%p Piece number within the backup set. This value starts at 1 for each backup set and is incremented by 1 for each backup piece created. If a PROXY is specified, the %p variable must be included in the FORMAT string either explicitly or implicitly within %U.
%r Resetlogs ID
%s Backup set number. This number is a counter in the control file that is incremented for each backup set. The counter value starts at 1 and is unique for the lifetime of the control file. If you restore a backup control file, then duplicate values can result. CREATE CONTROLFILE initializes the counter at 1.
%S Zero-filled sequence number
%t Backup set time stamp, a 4-byte value derived as the number of seconds elapsed since a fixed reference time. The combination of %s and %t can be used to form a unique name for the backup set.
%T Year, month, and day in the Gregorian calendar in the format: YYYYMMDD
%u An 8-character name constituted by compressed representations of the backup set or image copy number and the time the backup set or image copy was created
%U A system-generated unique filename (default). %U is different for image copies and backup pieces. For a backup piece, %U is a shorthand for %u_%p_%c and guarantees uniqueness in generated backup filenames. For an image copy of a datafile, %U means the following:
data-D-%d_id-%I_TS-%N_FNO-%f_%u
For an image copy of an archived redo log, %U means the following:
arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u
For an image copy of a control file, %U means the following:
cf-D_%d-id-%I_%u
%Y Year in this format: YYYY
%% Percent (%) character. For example, %%Y translates to the string %Y

6.Paralellik Derecesinin Belirlenmesi(DEVICE TYPE DISK PARALLELISM)

Veritabanı serverimizin donanım altyapısına göre RMAN yedek ve kurtarma işlemleri için birden fazla channel tanımlayabiliriz.

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

7.Data File Mirror Yedekleme(DATAFILE BACKUP COPIES)

Yedek sırasında data file yedeklerini kaç kopya yedekleneceği belirlenir.Default olarak data filelerinde yedek sırasında 1 kopyası oluşturulur.

RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

8.Arşivlog dosyasının Mirror Yedekleme(ARCHIVELOG BACKUP COPIES)

Yedek sırasında Archivelog dosyalarının kaç kopya yedekleneceğini belirlenir.Default olarak data Archivelog dosyalarınında yedek sırasında 1 kopyası oluşturulur.

RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;

9.Maksimum Yedek Boyutunun Belirlenmesi(MAXSETSIZE)

MAXSETSIZE parametresi ile alınacak yedeğin boyutuna limit koyuyoruz bu limiti aşması durumunda yedek işlemini iptal edecektir. Varsayılan değeri limitsizdir(UNLIMITED).

RMAN> CONFIGURE MAXSETSIZE TO 4G;

Diger parametre ise MAXPIECESIZE parametresidir. MAXPIECESIZE ile yedegi set edilen boyutta parçalar halinde alınmasını sağlar ve bir parçanın olabileceği maksimum boyutunu belirler.

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE=2G;

10.Şifreleme(Encryption) Kullanımı(ENCRYPTION FOR DATABASE- ENCRYPTION ALGORITHM)

11g ile gelen bir özelliktir.Şifreleme özelliği Oracle Enterprise Edition ile birlikte Advanced Security lisansına sahip isek kullanabiliriz.Security Wallet yapılandırıldıktan sonra şifreleme aşağıdaki gibi kullanılabilir.

RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

NOT : Şifreleme esnasında belirli bir şifreleme algoritması kullanabiliriz.Şifreleme algoritmalarını V$RMAN_ENCRYPTION_ALGORITHMS view’ini sorgulayarak öğrenebiliriz.

RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES128';

11.Sıkıştırma(Compression) Kullanımı(COMPRESSION ALGORITHM)

11g ile gelen bir özelliktir. Sıkıştırma özelliği Oracle Enterprise Edition ile birlikte Advanced Compression lisansına sahip isek kullanabiliriz.2 farklı sıkıştırma metodu mevcuttur.ZLIB ve BZIP2,ZLIP daha az CPU tüketir ama sıkıştırma oranı düşüktür.BZIP2 ise CPU kullanımı yüksektir ama sıkıştırma oranıda yüksektir.

RMAN> CONFIGURE COMPRESSION ALGRITHM ‘zlib’;
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE format '/u01/app/oracle/dbf_%d_%t_%s.rman';

Oracle 11g R2 ile birlikte farklı sıkıştırma yöntemleri kullanabiliriz.BASIC,LOW,MEDIUM ve HIGH olmak üzere 4 farklı yöntem vardır.

RMAN> CONFIGURE COMPRESSION ALGRITHM ‘low’;

Sıkıştırılarak oluşturulan backupset’lerin normallerinden hiçbir farkı olmaz. Recover esnasında kullanılan komutlar ya da sorgulama aşamaları aynıdır. Tek farkı, işlemlerin daha yavaş yapılmasıdır.İster istemez sıkıştırılmış bir dosyanın içeriğinden veri çekmek daha fazla işlem gücü gerektirir.

12.Arşiv Dosyası Silme Kuralı(ARCHIVELOG DELETION POLICY)

Arşiv yedeği alındıktan sonra silinip silinmeyeceği set edilir.Varsayılan değeri NONE’dir.Bu kural NONE iken komut satırından arşiv log dosyaları “backup archivelog delete input” veya “delete archivelogs” komutlarıyla silinir.

Oracle Data Guard kullanıyor olabiliriiz.Stand by veritabanı canlı veritabanında oluşan arşiv dosyaları ile beslenir.Bu durumda apply edilmemiş bir arşiv dosyasını silmememiz gerekir.Bunu aşağıdaki konfigürasyon ile sağlayabiliriz.

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

Apply edilmesini beklemeden sadece standby veritabanına arşivler taşındıktan sonra da silebiliriz.

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;

13.Anlık(Snapshot) Control Dosyası(SNAPSHOT CONTROLFILE NAME TO)

RMAN,yedek işlemini yürütebilmek için control dosyasının tutarlı halini okumalıdır.Control dosyası yapısı gereği sürekli değişen bir dosyadır.Yedek esnasında control dosyasında bekleme olaylarına(wait events) sebep olmamak için RMAN,control dosyasının ‘snapshot control file’ adıyla kopyasını oluşturur.Her yedek alma işlemi öncesi snapshot control dosyası gerçek control dosyası ile yenilenir.Varsayılan olarak ORACLE_HOME/dbs dizini altında snapcf_<SID>.f adıyla kaydedilir.Bu yeri ve ismi istersek aşagıdaki gibi degiştirebiliriz.

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘/u01/app/oracle/snapbckp.f’;

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