Pages

17 Aralık 2010 Cuma

Oracle 11g versiyonunda Recovery Manager(RMAN) Teknolojisi

Oracle Recovery Manager(RMAN) teknolojisi, veritabanının gerek bütünsel gerekse tablespace bazlı olarak yedeğinin alınması ve felaket anında yedekten belirli zaman dilimine yada SCN numarasına dönülmesi şeklinde özetlenebilir.  Oracle 11g veritabanı sürümü ile RMAN teknolojisine pek çok yenilik eklenmiştir. Data Recover Tavsiyecisi(Advisor), muhtemel oluşabilecek hataları analiz etme ve en azından bir tane tamir seçeneğini sunması ile oluşabilecek herhangi bir uygulama hatasından once problemleri teşhis eder ve böylece veritabanının kesintisiz çalışması ve bütünlüğünün bozulmaması için üst düzey bir koruma saplar. Bu amaçla ise RMAN’ın list failure, change failure, advise failure ve repair failure gibi Oracle 11g ile yeni gelen tamir komutları kullanılır.  RMAN, flashback alanı dolu olduğu takdirde arşivlenlenmiş redo günlüklerini kullanır. Duplicate komutu ile de kopya veritabanı veya fiziksel standby veritabanı, yedek dosyalarına gerek kalmaksızın oluşturulabilir.


RMAN teknolojisi, üretim veritabanında yedekleme esnasında performans kaybının olmaması amacıyla recovery katalog metodunu kullanır. RMAN işlemleri sırasında kullanılmak üzere başka bir sunucu üzerinde(veya aynı sunucuda) oluşturulan bir veritabanı, recovery katalog rolüne sahip olur.  RMAN recovery kataloğu, recovery verisini, kendi ayarlarını ve hedef veritabanı şemasını içermektedir. Hedef veritabanının kontrol dosyası bu veriyi, scriptleri saklamak, hedef veritabanı kontrol dosyasının kopyasını sağlayabilmek amacıyla kullanır ve bu sebeple RMAN işlemlerinde recovery kataloğu kullanmak tavsiye edilir.
RMAN Teknolojisinin Geleneksel Yedekleme Teknolojileri Karşı Avantajlar

  • Kullanılmayan blokların atlanması: Bir tabloda daha onceden 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’a özgü binary sıkıştırma metodu kullanarak, Oracle data blokları üzerinde bulunan farklı veri tipleri için maksimum sıkıştırma yapılarak backup cihazı üzerinde boş alan ayrılabilir. (“RMAN> configure device type disk backup type to compressed backupset” komutu ile aktive edilir
  • Veritabanı yedeklerini açma: 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ı: Yedekleme ve geri kurtarma işlemlerinde Oracle birden fazla I/O kanalları açabilir, böylece disk üzerindeki işlemler hızlanmış olur. (“RMAN> configure device type disk parallelism backup type backupset” komutu ile aktive edilir)
  • Platform bağımsız: RMAN her türlü donanım ve işletim sistemi üzerinde aynı komutlarla kullanılır.
  • Kataloglama: Tüm RMAN kayıtları hedef bir veritabanı kontrol dosyası içinde kayıt edilir. Manuel takibe gore avantaj sağlar.
  • Şifreli Yedekleme: Oracle 11g sürümü ile yedekleri şifreli olarak saklama imkanı vardır.
Ambar Veritabanının Oluşturulması
Ambar veritabanı olarak RMAN yedeklerinin tutulacağı bir veritabanı oluşturulmalıdır. Bu veritabanı recovery kataloğu olarak kullanılacaktır. Şimdi sırasıyla recovery catalog oluşturma işlemine başlayalım.
1.   Recovery Catalog olarak kullanılacak hedef veritabanına bağlanılır. Örneğimizde ambar veritabanının ORACLE SID’si “katalog” şeklindedir. Üretim veritabanımızın SID’si ise “orcl” dir.

$  sqlplus sys/***@katalog as sysdba

2.   Ardından RMAN tablespace içindeki recovery katalog ve RMAN kullanıcısı oluşturulur. Ardından bu RMAN kullanıcısına haklar verilir.

SQL> create tablespace rman datafile ‘/u01/app/oracle/oradata/katalog/rman01.dbf’
         size 125m autoextend on next 50m maxsize 500m;
SQL> create user rman identified by ****
          default tablespace rman
          quota unlimited on rman;
SQL> grant recovery_catalog_owner to rman;

3.   Artık ambar veritabanında RMAN kullanıcı yer almaktadır. RMAN’I çalıştırıp kataloğa bağlanabilir ve create catalog komutu ile ambarı tanımlayabiliriz.

$ rman catalog rman/rman@katalog
RMAN> create catalog;

4.   Şimdi “orcl” adlı üretim veritabanımızı, RMAN ambarındaki “katalog” adlı hedef veritabanına kayıt etmemiz gerekecek. Bu işlem hedef veritabanı şeması ve hedef veritabanı tekil kimlik numarası(DBID) gibi bilgileri kayıt etmeye yarar. Hedef veritabanı bir sefer kayıt edilmelidir, takip eden tüm RMAN oturumu bağlantılarında, artık ambardaki doğru metadata referans olarak kullanılacaktır.

$ rman target sys/***@orcl catalog rman@katalog
RMAN> register database;

Full Yedekleme İşlemi
Örneğimizde flashback recovery alanına tüm veritabanı dosyalarının ve SPFILE’ın backupsetlerini kullanacağız.Compressed seçeneği opsiyoneldir ve yedeği sıkıştırarak almaya yarar.
RMAN> backup as [compressed] backupset database spfile;

Yedeklerin hedef veritabanı kontrol dosyası ve RMAN ambarı içinde kataloglandığını görmek için list komutunu kullanabiliriz.
RMAN> list backup by backup;

Sadece tablespace’lerin yedeğini almak için ise;
RMAN> backup as backupset tablespace ;

Sadece data dosyalarını yedeklemek içi ise;
RMAN> backup as backupset datafile ‘’;

Sadece kontrol dosyası ve SPFILE yedeklemek için;
RMAN> backup current controlfile spfile;

Artalan(Incremental) Yedekleme İşlemi
Artalan yedeklemenin en büyük avantajı geri yükleme esnasında zaman kaybının azalması şeklinde özetlenebilir. En son alınan yedek sonrasında, değişen blok içindeki veriler yedeklenir. İki tür artalan yedekleme vardır.
  • Level 0: Bu seviyedeki artalan(incremental) yedeklemede, yedek en son full yedek sonrasından alınır.
  • Level 1: Bu seviyedeki artalan(differential) yedeklemede, yedek en son alınan incremental(Level 0) yedekten, aksi takdirde en son full yedek sonrasından alınır.
Yedekleme için saklama aralığı(retention period) olarak tanımlanan zamandan ilerde arşivlenmiş yedeği bulunmayan data dosyalarını listelemek için aşağıdaki komutu çalıştırmak yeterlidir;
                 RMAN> report need backup;
Eğer bu rapor sonucu herhangi bir yada daha fazla data dosyası listelenirse, bunların incremental yedeğini almak için aşağıdaki komut çalıştırılır;
                 RMAN> backup incremental level 0 database;

Artalan Yedeklerde Blok Değişikliğinin İzlenmesi

Artalan yedeklerde en büyük sorun, çok büyük veritabanlarında en son yedek sonrasında hangi blokların değiştiğini hesaplamasında yaşanan zaman ve performans kaybıdır. Oracle bunun önüne geçmek için değişiklik izleme numarası ile hangi blokların değişikliğe uğradığını kolayca izler ve artalan yedeklemede bu izleme numaralarını kullanarak zaman kaybının önüne geçilir. Blok değişikliği izlemesinin veritabanında etkinleştirilmesi için aşağıdaki SQL cümlesi çalıştırılmalıdır.

                 SQL> alter database enable block change tracking
                           using  file ‘+DATA’;

Yedeklerin geçerliliğinin gözden geçirilmesi ve tasdik edilmesi

Yedek alınan dosyaların zaman içinde bozulup bozulmadığını gözlemlemek için backup validate database [archivelog all] komutu kullanılır. Archivelog all takısı, arşivlenmiş redo log dosyalarınında sağlamlığını test eder. Geri yükleme esnasında bu komut checkup amaçlı kullanılmalıdır.

Geri Kurtarma(Recovery) İşlemleri

RMAN ile blokları, veri dosyalarını, tablespaceleri ve hatta tüm veritabanını dahi geri kurtarabiliriz.

  • Blok Media Recovery: Bir veya birden fazla data bloğunu kurtarabilmek için RMAN, veri dosyası içinden veri dosyası numarası ve blok numarasını bilmek zorundadır. insert veya select durumlarında dahi bozuk bloklar tespit edilebilir. V$DATABASE_BLOCK_CORRUPTION görünümünede sorgu çekilirse veritabanındaki bozuk bloklar adresleri ile listelenir. Aşağıda örnek bir hata mesajı yer almaktadır.
      ORA-01578: ORACLE data block corrupted (file # 8, block # 374)
      ORA-01110: data file 6:  /u01/app/oracle/oradata/orcl/deneme02.dbf’

Bu bozuk bloğu kurtarmak için aşağıdaki komutu çalıştırmak yeterli olacaktır.

                                  RMAN> recover datafile 8 block 374;
  • Kontrol dosyasını geri kurtarma: Kontrol dosyasının kopyalarından birisi kaybolduğunda veya bozulduğunda ise aşağıdaki işlemler uygulanmalıdır. Aşağıdaki örnekte “katalog” adlı ambar veritabanımızı kullanmaktayız.

                                  SQL> startup mount;
                                   ……
                                  RMAN> restore controlfile;
  • Tablespace geri kurtarma: Eğer bir tablespace’e ait veri dosyalarını içeren fiziksel disk bozulursa, veritabanının çalışmasını kesintiye uğratmadan bu tablespace’in geri kurtarma işlemini yapabiliriz.
                  RMAN> sql ‘alter tablespace offline immediate;
                  RMAN> restore tablespace ;
                  RMAN> recover tablespace ;
                  RMAN> sql ‘alter tablespace online;
  • Veri dosyasını geri kurtarma: V$DATAFILE_HEADER sorgusunu kullanarak belirlenen kayıp yada bozuk veri dosyaları bu dosyanın ait olduğu tablespace ONLINE durumda iken bile geri kurtarılır. 
                    RMAN> restore datafile  ;
                    RMAN> recover datafile  ;
    • Tüm veritabanını geri kurtarma: Tüm veritabanının geri kurtarılması durumunda aşağıdaki adımlar uygulanır.
                                RMAN> startup mount;
                    RMAN> restore database;
                    RMAN> recover database;
                    RMAN> alter database open;
    • Zaman bazlı geri kurtarma:  Bu metotta veritabanında sorun meydana gelmeden önceki zaman dilimine veya SCN numarasına geri yükleme ve kurtarma işlemidir. Oracle 11g sürümü ile RMAN içinden list failure komutu ile veritabanında oluşan bir hata listelenir, böylece uyarı günlükleri veya izleme günlüklerinden potansiyel hata aramak zahmetinden kurtulunur. advise failure komutu ilede listelenen potansiyel hataya ne önlem alınacağının tavsiye raporudur ve veritabanı yöneticisine sadece Oracle 11g Veri Kurtarma Tavsiyecisinin oluşturduğu otomatik tamir scriptlerini çalıştırmak kalır.
                    RMAN> list failure;
                    RMAN> advise failure; 
                    RMAN> repair failure;
          
    • Arşiv redo günlük dosyalarını kullanarak geri kurtarma: Belirli bir zaman dilimine geri dönme ihtiyacı olduğunda Flashback Database özelliğinin yanısıra kayıtlı mevcut arşivlenmiş redo günlük dosyalarıda kullanılabilir.
                    RMAN> restore archivelog from sequence 101 until sequence 300;    

0 yorum:

Yorum Gönder