RMAN ile yedekten dönme işlemleri
RMAN yedek alma ve yedekten dönme işlemleri için kullanılacak , Oracle tarafından da önerilen bir araçtır. Birçok geri dönme senaryoları bulunmaktadır. Bunların temel olanları :
- Bir veri tabanı dosyasını dönme
- Bir tablo alanını geri dönme
- Komple veri tabanını geri dönme
1 – Bir veri tabanı dosyasını dönme :
Aşağıdakine benzer bir hata aldığınızda yapılması gereken işlemdir:
ORA-01116: error in opening database file 66
ORA-01110: data file 66: ‘datafile path/datafilename’
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Bulunamayan dosyayı geri dönmek için aşağıdaki komutlar kullanılabilir:
run {
sql ‘alter database datafile 66 offline’;
restore datafile 66;
recover datafile 66;
sql ‘alter database datafile 66 online’;
}
2 – Bir tablo alanını geri dönme :
Bu kullanıcılar için acı verici ama DBA ler için çok basit bir işlemdir.
Çözüm için:
run {
sql ‘alter tablespace tablespace_name offline immediate’;
restore tablespace tablespace_name;
recover tablespace tablespace_name;
sql ‘alter tablespace tablespace_name online’;
}
Veri tabanı normale dönmüş olacaktır.
3 – Komple veri tabanını geri dönme
bu başınıza gelebilecek en zor durumdur. Veri tabanı açılmıyor ve birçok dosya silinmiş ise veri tabanını yedekten dönmeniz gerekecektir. Veri tabanını açmaya çalıştığınızda aşağıdaki duruma benzer bir durum var ise:
SQL> startup
ORACLE instance started.
Total System Global Area 2.3622E+10 bytes
Fixed Size 2126480 bytes
Variable Size 1.1341E+10 bytes
Database Buffers 1.2264E+10 bytes
Redo Buffers 14647296 bytes
ORA-00205: error in identifying control file, check alert log for more info
Paniklemeyin herşey kontrol altında.
Herhangi bir rman oturumundan aşağıdaki komut ile başlayın:
startup nomount;
Daha sonra
restore controlfile;
Conrolfile geri dönüşü için bazı değişik parametreler de verilmesi gerekebilir. Yedeğin bulunduğu yer , dönülecek yer vs gibi. Geri dönüş sırasında aşağıdakine benzer çıktı görmeniz gerekiyor.
Starting restore at 13-MAR-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=162 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: restoring controlfile
channel ORA_DISK_1: restored backup piece 1
piece handle=/path/o1_mf_s_617126064_2zfl9jy0_.bkp tag=TAG20070313T155424
channel ORA_DISK_1: restore complete
output filename=/oradata/ueltest/control01.ctl
output filename=/oradata/ueltest/control02.ctl
output filename=/oradata/ueltest/control03.ctl
Finished restore at 13-MAR-07
Yine RMAN oturumundan veri tabanını mount moda getirelim.
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
Sonra aşağıdaki komutu verip;
RMAN> host;
SQL PLus ile bağlanıp
sqlplus / as sysdba
Aşağıdaki komut ile veri tabanının kararlı son SCN bilgisine erişelim:
SQL> select archivelog_change#-1 from v$database;
Tüm rman oturumunlarını kapatıp, yeniden bağlanıp aşağıdaki komut ile kararlı son SNC ye getirelim veri tabanımızı.
run{
set until scn (bir önceki sorgudan dönen sayı);
restore database;
recover database;
alter database open resetlogs;
}
Bu işlemler yedeğin bulunduğu ortamın okuma yazma hızına bağlı olarak uzun yada kısa sürebilir. Herşey yolunda gittiğinde veri tabanı açık ve çalışır durumda olacaktır.
Her veri tabanı geri dönüş işleminden hemen sonra mutlaka full yedek alın. Çünkü önceki yedekler geçersiz olacaktır.