Oracle Rman ile Veritabanı Kurtarma Uygulaması (Recover Database)

OracleBackupBu makalemizde kaybedilmiş bir Oracle veritabanımızın “RMAN” aracını kullanarak recovery etmeyi inceleyeceğiz.

Kurtarma Senaryomuz

Veritabanımız Oracle Enterprise Linux üzerinde çalışmaktadır. Oluşan bir sorun sonucu disklerimiz gitmiş veritabanına erişim sağlanamamaktadır. Öncesinde aldığımız RMAN yedeğimizi başka bir makine üzerine aktararak veritabanımızı ayağa kaldıracağız. Bunun için öncelikle bozulan veritabanımızın çalıştığı platformu oluşturmamız gerekiyor. Bir makineye Oracle Enterprise Linux ve Veritbanımızın aynı versiyonunu (patchset dahil) kuruyoruz. Veritabanımızı kurarken “software only” olarak kuruyoruz ve sadece “netca” komutumuz ile “Listener” servisimizi yaratıyoruz. Eğer kurtardığımız  veritabanımızda “tnsnames.ora” dosyasında girdilerimiz varsa bunlarıda kaybettiğimiz veritabanımızdaki gibi ayarlıyoruz.

1. Öncelikle işletim sistemimizi “Oracle Enterprise Linux Kurulumu” yazımızda anlatıldığı gibi kendi sistemimize göre kuruyoruz.

2. Veritabanımızı aşağıdaki yazılarımızdan sistemimize uygun olana göre kuruyoruz. Burada dikkat edeceğimiz veritabanımızı “software only” olarak kurup sadece “netca” ile tns servisimizi ayağa kaldırıyoruz. yani “dbca” komutunu çalıştırdığımız aşamaya kadar gerekli işlemleri sistemimize göre yapıyoruz.

3. Veritabanımızı kurtarma işlemleri için aşağıdaki adımları uyguluyoruz.

-- Kurtarma işlemini yapacağımız veritabanında yedeklemeyi aşağıdaki gibi 
gerçekleştirmiştim. Geri dönüş işlemi için aşağıdaki yedekleri kullanacağım.

RMAN> backup as compressed backupset database format
'/u01/backups/dbf_%d_%t_%s.rman' tag='DBF_ORCL_20130510' plus
archivelog format '/u01/backups/arc_%d_%t_%s.rman'
tag='ARC_ORCL_20130510';

RMAN> backup current controlfile format '/u01/backups/cf_%d_%t_%s.rman';

RMAN> backup spfile format '/u01/backups/sp_%d_%t_%s.rman';

-- Veritabanımızı "software only" kurduktan sonra "RMAN Backup dosyalarımızı
"/u01/backups/" dizini altına kopyalıyoruz.

-- Öncelikle aşağıdaki dizinlerimiz yoksa "oracle" kullanıcısıyla yaratıyoruz.
Eğer "ASM" kullanıyorsak "ASMCMD" komut satırından yoksa uygun dizinleri
yaratmalıyız. "OMF" kullanıyorsa bunu yapmamıza gerek yok.

$ mkdir -p /u01/app/oracle/admin/orcl/adump
$ mkdir -p /u01/app/oracle/oradata
$ mkdir -p /u01/app/oracle/fast_recovery_area

-- Öncelikle "spfile" dosyamızı yedeğimizden onarıyoruz. Eğer onardıktan sonra
değişiklik yapacaksak bir sonraki adımı uyguluyoruz.

RMAN> startup nomount;

RMAN> restore spfile from '/u01/backups/sp_ORCL_815078760_6.rman';

-- "spfile" dosyamızda parametre değişikliği yapacaksak aşağıdaki adımları
uyguluyoruz.

RMAN> restore spfile to pfile '/u01/app/oracle/product/11.2.0.3/db/dbs/initorcl.ora'
from '/u01/backups/sp_ORCL_815078760_6.rman';

$ vim /u01/app/oracle/product/11.2.0.3/db/dbs/initorcl.ora

SQL> create spfile from pfile;

RMAN> shutdown abort;

-- "spfile" dosyamızı onardıktan sonra veritabanımızı "nomut" modda açıp
"controlfile" dosyamızı onarıyoruz.

RMAN> startup nomount;

-- DBID konusu çok önemlidir. (Bir veritabanı kurulduktan sonra muhakkak bir 
yere not etmeliyiz yoksa geri dönüş işlemi yapamayız.) 
Çöken veritabanımızın DBID'sini giriyoruz.

RMAN> set dbid=1342857428

-- Controlfile dosyamızı yedeğimizden dönüyoruz.

RMAN> restore controlfile from '/u01/backups/cf_ORCL_815078750_5.rman';

RMAN> shutdown abort;

-- Önceki sunucumuzda aldığımız ve "/u01/backups" altına kopyaladığımız "RMAN"
yedeklerimizi tanıtıyoruz.

RMAN> startup mount;

RMAN> catalog start with '/u01/backups';
-- "yes" ile onaylıyoruz.

-- Veritabanı geri dönüş işlemini başlatıyoruz.

RMAN> restore database;

-- Varsa "archivelog" yedeklerimizi geri dönüyoruz.

RMAN> restore archivelog all;

-- Geri dönüş İşlemlerin ardından onarma işlemimizi tamamlıyoruz.

RMAN> recover database;

-- Veritabanımızı "resetlog" parametresi ile açıyoruz.

RMAN> alter database open resetlogs;

-- Eğer sistemimizde bir "passwordfile" yoksa aşağıdaki gibi oluşturuyoruz.

$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=sysparolamiz entries=5 FORCE=Y

-- Son olarak veritabanımızı sisteme "register" ediyoruz.
alter system register;

-- Veritabanımız kullanıma hazır verilerimize erişebiliriz.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Sun May 12 10:37:54 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select status from v$instance;

STATUS
------------
OPEN

Bu makalemizde çöken bir sunucudan alınmış veya alınmış bir yedeği farklı bir sunucuya dönmeyi inceledik.

RMAN (Recovery Manager) aracıyla ilgili daha deyalı bilgileri “Oracle Veritabanlarında Backup & Recovery Uygulamaları (Rman)” yazımızda bulabilirsiniz.

Başka bir makalede görüşmek üzere…

Bu yazı Oracle kategorisine gönderilmiş ve , , , , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.