Pages

19 Ocak 2011 Çarşamba

Primary/Standby veritabanı ortamında failover işlemi

Dataguard ortamında failover primary veritabanının erişilemez olduğu durumlarda kullanılır. Belirli bir sure zarfında servisi geri yükleme imkanı olmaz. Failover durumu meydana geldiğinde eğer primary veritabanı “maksimum koruma” modunda çalışıyorsa, öncelikle standby veritabanı “maksimum performans” moduna geçirilmelidir.

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE
PERFORMANCE;

Standby veritabanı maksimum performans moduna geçtikten sonra aşağıdaki adımlar ile failover işlemi gerçekleşir.

  1. Standby veritabanında $ARCHIVE_GAP görünümüne sorgu çekilerek redo boşluğu olup olmadığına bakılır. Eğer varsa ve elbette primary veritabanından bu eksik redo dosyaları standby sunucuya kopyalayabilme imkanı mevcutsa bu redo log dosyaları standby üzerinde kayıt edilir.
  2. Redo uygulamasını durdurun.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
CANCEL;

  1. Alınan tüm redo verilerinin uygulamasını sonlandırın.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

Eğer bu aşamada bir hata ile karşılaşırsanız alınan redo verilerinden bazıları uygulanmamıştır. Bu noktada kayıp redoları aşağıdaki sorgu sonucunda bulup standby üzerine kopyalamaya çalışıp kayıt edin.

SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#)
     2> OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

Buna rağmen sorun çözülmezse bazı verilerin kaybolmasını göze alarak aşağıdaki komutu çalıştırarak hata mesajından kurtulacaksınız. Bu komuttan sonra redo uygulamasını sonlandırmayı unutmayın.

SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

  1. Fiziksel standby veritabanını primary rolüne taşıyın ve yeni primary veritabanını başlatın.
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH
SESSION SHUTDOWN;
SQL> ALTER DATABASE OPEN;

  1. Yeni primary veritabanın yedeğini alın ve çöken eski primary veritabanını standby olarak yapılandırın. Bu aşamada yeni primary veritabanın en güncel SC numarasına kadar geri yükleme ve sonrasında kurtarma yapmak gerekmektedir.
RMAN> RUN
{
SET UNTIL SCN <yeni_primary_veritabanının_en_güncel_scn_numarası + 1>;
RESTORE DATABASE;
RECOVER DATABASE;
}

Ardında, bu eski primary veritabanını standby veritabanı rolüne geçirip yeniden başlatın ve redo akımını başlatın.

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SQL > SHUTDOWN IMMEDIATE;
SQL> STARTUP;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
  2> USING CURRENT LOGFILE DISCONNECT;

Daha sonra isterseniz her iki veritabanınıda eski rollerine döndürebilirsiniz…

0 yorum:

Yorum Gönder