Sayfalar

24 Temmuz 2012 Salı

Oracle RMAN Mucizesi - Back-up ve Test

Merhaba Arkadaşlar,

Son yazıda RMAN teknolojisini kullanmak için dosya sisteminde yeni dosyalar oluşturduk, veritabanını arşiv moda aldık ve buna bağlı bir takım işlemler gerçekleştirdik. Şimdi de kaldığımız yerden devam edelim:

Back-up Alma:

RMAN'ı aktive etmek için;
$> rman target /
komutu kullanılır. Tabi eğer bu komutu sunucu üzerinden çalıştırıyorsak. Eğer uzak bir bilgisayardan bağlanılmak isteniyorsa veritabanı belirtilerek şifre ile bağlanılır. Target burada hedef veritabanını işaret eder.

Aşağıdaki komutla RMAN'a ait tüm konfigürasyon parametrelerini görebiliriz;
RMAN> show all;
Örneğin "RETENTION POLICY RECOVERY window of 7 days" ile 7 günlük saklama yani 7 gün öncesinin veritabanına dönebilme garantisi verir. Yine RETENTION parametresi ile varsayılan back-up sayısını belirleriz. Diğer önemli olan şey CONTROLFILE AUTOBACKUP ON | OFF işlemidir ki DBA'ı inanılmaz derecede rahatlatan bir işlemdir. Kontrol dosyasında yapılan her değişiklik sonrası otomatik olarak back-up'ı alınır.

RMAN> list backup;
"Komutu ile daha önceden back-up alınmış mı?" sorusuna yanıt buluruz. RMAN bu sorunun cevabı için kontrol dosyasına giderek içeriğini kontrol eder. Alınan back-up'lar burada bilgi olarak tutulmaktadır.

RMAN'a veritabanı üzerinde back-up işleminin gerekli olup olmadığını sorabilirsiniz.
RMAN> report need backup;
Böylelikle hangi veri dosyalarının back-up'ının alınması gerektiğini size bildirecektir.

Aşağıdaki komutla veritabanının full back-up'ını alabilirsiniz:
RMAN> backup database;
RMAN> list backup;
Artık bu komutla veritabanında son aldığımız back-up'ı görebiliriz. Oluşturduğumuz back-up klasöründe iki adet dosya oluşmuştur. Birisi kontrol dosyasının back-up'ı, diğeri ise veri dosyalarının toplamda alınmış back-up'ıdır. Yani birden fazla veri dosyanız olsa bile burada ortak bir back-up dosyası göreceksiniz.

Test Etme ve Uygulama:

İşlemleri sürdürürken test etmek için küçük bir tablo oluşturalım:
SQL> create table A (id number) tablespace users;
ile kullanıcı tablo uzayında tek sütunlu(number tipinde id sütunu) bir tablo oluşturduk. Şimdi de buna üç adet veri ekleyelim:
SQL> insert into A (id number) VALUES (3);
SQL> insert into A (id number) VALUES (4);
SQL> insert into A (id number) VALUES (5);
SQL> COMMIT;
SQL> SELECT * FROM A;
ile aşağıdaki sonuç döner;

id
---
3
4
5

Back-up'ı test etmek için az önce oluşturduğumuz tablonun bulunduğu veri dosyasını yok edeceğiz yada bozacağız. Bunun için öncelikle kullanıcı tablo uzayının hangi veri dosyasında olduğunu aşağıdaki sorgu ile keşfederiz;
SQL> SELECT tablespace_name from user_tables WHERE table_name='A';
Diyelim ki bu sorgudan 4. veri dosyasında bulunduğu sonucu dönmüş olsun. Veri dosyalarının bulunduğu klasöre gidip manuel olarak bu dosyanın ismini bozalım. Ya da aşağıdaki gibi bu dosyayı online pozisyondan offline pozisyona getirerek kullanılamaz hale getirelim.
RMAN> alter database datafile 'dosyanın bulunduğu path' offline;
Tekrar SELECT attığımızda aşağıdaki sonucu tekrar görebiliyor olacağız.


id
---
3
4
5

Bunun nedeni tahmin edebileceğiniz gibi (önceki yazıda bahsettik) data buffer cache'te en son kullanılan SQL sorgusuna ait verilerin tutuluyor olmasıdır. Öyleyse bu verileri de temizleyelim;
SQL> alter system flush buffer_cache;
sorgusu ile temizlenir. Tekrar SELECT sorgusu attığımızda ise böyle bir veri dosyasının bulunamadığı hatası ile karşılaşırız. Şimdi de aldığımız back-up'la bu sorunu giderelim.
RMAN> restore datafile 4;
Böylelikle 4. veri dosyasının restore işlemi gerçekleşir. Bunun için elbette aldığımız back-up dosyası kullanılır. 

Burada şu küçük ayrımı da belirtelim. 
RECOVER: Arşivlenmiş redo log dosyalarını sanki o anda veritabanına transaction'lar uygulanıyormuş gibi apply eder(uygular). 
RESTORE: Alınan back-up ile veritabanında kurtarma işlemlerini sağlar.

Buradan anlayabileceğiniz üzere aynı işlemi aşağıdaki komut da başarılı bir biçimde gerçekler:
RMAN> recover datafile 4;
Bu adımdan sonra halen offline konumda olan veri dosyasının tamir edilmiş şeklini online yapmamız gerekir;
RMAN> alter database datafile 'dosyanın bulunduğu path' online;
Artık her şey eskisi gibidir ;) Bunun kontrolünü yine minik tablomuza SELECT atarak yapabilirsiniz.

Böylelikle en genel anlamda bir back-up nasıl alınır ve nasıl uygulanır gördük. RMAN'ın marifetleri burada bitmiyor tabi ki. Block Corruption yani Block Bozulmasında RMAN'ın aktivitesini inceleyeceğiz. Ayrıca List-Advice-Repair Failure özelliğini inceleyeceğiz. Bunları da bir sonraki yazıya bırakıyorum.

İyi çalışmalar...

Hiç yorum yok:

Yorum Gönder