I think you will spend 162 seconds reading this post
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’in bir veritabanına bağlanması için aşağıdaki komutu, shell üzerinden girmek 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@YDKTST;
YDKTST, tnsnames.ora dosyasında tanımlıdır ve yedek alacağımız veritabanını temsil eder.
RMAN ile Cold Backup Şeklinde Yedek Almak
Standart bir cold backup, veritabanını kapatıp, dosyaları bit‐bit kopyalamaktan ibarettir. RMAN’de ise
veritabanını program içinden kapatıp, backup komutunu vermeniz gerekir. Aşağıdaki shell script ile
RMAN üzerinden cold backup alma yöntemini görebilirsiniz:
#!/bin/sh
# RMAN COLD BACKUP
rman target / << EOF
shutdown immediate
startup mount;
backup database format '/backup/path/%d_%t_%s.rman';
alter database open;
EOF
exit
Yukarıdaki script ile veritabanının full backup’ini alabiliyorsunuz. Farkedeceğiniz gibi yedek alma
işlemi sırasında veritabanı kullanılamıyor. Kullanımı basit bir yöntem ancak çalıştığımız ortam gereği,
cold backup pek tercih edeceğimiz bir yapı değil. Genellikle online backup şeklinde, veritabanını
kapatmadan yedek almamız lâzım.
Full Database Online Backup
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;
Yukarıda gördüğünüz gibi tek satırda veritabanını çalışır vaziyette backup’layabiliyoruz. Ancak nereye,
ne şekilde yedekleneceğini belirtmedik. Bu durumda $ORACLE_HOME/dbs altında yedek dosyaları
oluşacaktır. Çoğu zaman bu hoş olmayan sonuçlar doğurabilir. Disk dolabilir ya da format biçimi
istediğiniz gibi olmaz vs... Bu nedenle format parametresini belirtmek her zaman için daha iyidir.
RMAN> backup database format '/backup/path/%d_%t_%s.rman';
Tablespace ve Datafile Yedeklemek
Örnek üzerinden anlatmak daha uygun olacak. System ve Users isimli tablespace’leri yedeklemek
istediğimizi düşünelim. Bunun için aşağıdaki işlemi yapmak yeterli:
RMAN> backup tablespace system, users;
Bu 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. Elbette format belirterek, bir klasör belirtilmesi daha uygun olur.
Şimdi de diğer bir konu, datafile yedeklerinin alınmasına değinelim. Önce hangi datafile’ların yedek
alınması gerektiğine karar vermemiz gerekiyor. Bunun için aşağıdaki sorguyu sql ortamında
çalıştırabilirsiniz:
SQL> SELECT tablespace_name, file#, name
FROM v$datafile_header ORDER BY tablespace_name;
Burada tablespace’leri göstermemizin özel bir nedeni yok. Ben daha düzenli bir yapıda görmek
istediğim için bu şekilde bir sorgu kullanıyorum. Hâlbuki, yedek almak istediğiniz datafile’in dosya
numarası yeterli. Dilerseniz tablespace’e ait bütün datafile’ları ya da sadece birkaç farklı datafile’i
yedekleyebilirsiniz.
Sorgu sonucunda dönen değerlere göre, datafile numaralarını alıp yedekleme işlemine başlıyoruz:
RMAN> backup datafile 1,3,45;
Komutu yukarıdaki gibi çalıştırırsanız, 1, 3 ve 45 numaralı dosyaları backup’layacaktır. Format
belirtmek yine opsiyonel olmakla birlikte, belirtilmesi daha uygundur.