DATA GUARD KORUMA(PROTECTION) MODLARI

Bu bölümde sizlere Oracle veritabanının felaket anında verileri kurtarma (Disaster Recover) amacıyla kullanıcılarına sunduğu teknoloji olan ve Enterprise sürümde desteklenen Dataguard teknolojisinin koruma modlarından kısaca bahsedeceğim.

Eş zamanlı redo taşımada LGWR proccess’i her zaman LNS işleminden doğrulama bilgsini bekler. Primary-standby arasında bir problem oluştuğunda (ağ kesintisi vb.), LGWR işlemi LNS den doğrulama bilgisini alamayacağı için son kullanıcıya commit bilgisini dönmez veya geç döner.Bu durum primary db nin HANG(cevap vermeme) olmasına yol açabilir. Hem sıfır veri kaybı olsun, hem de herhangi bir ağ kesintsi durumunda primary db hang olmasın dediğimizde dataguard, arklı koruma modları oolarak çözüm sunar.

3 koruma (protection) modu vardır. Tablo ile özetleyecek olursak:

Maksimum Koruma :

  • Max veri koruması ön planda.
  • LGWR işlemi standby db tarafından redo verilerinin düzgün ulaştığına dair doğrulama bilgisi bekler. Bu bilgi gelmediğinde son kullanıcıya commit bilgisi göndermez.
  • NET_TIMEOUT parametresi bu modda yok.
  • Primary-standby arasındaki problem primary db’nin cevap vermemesine sebep olur.
  • Bu modu kullananlar genelde birden fazla standby db oluştururlar ve bu sayede standby db’lerden birisi ulaşılmaz duruma düştüğünde primary db’nin hang olması engellenir.

Maksimum Kullanılabilirlik  :

  • LGWR işlemi standby db tarafından redo verilerinin düzgün ulaştığına dair doğrulama bilgisi bekler
  • Primary-standby arasında iletişim problem yaşandığında  NET_TIMEOUT parametresinin saniye cinsinden değeri kadar beklenir, süre dolduğunda LGWR işlemi ile olan bağlantısını koparır ve commit bilgisini son kullanıcıya döner.
  • NET_TIMEOUT parametresi ile primary veritabanının hang olması önlenir.

Maksimum Performans:

  • ASYNC redo taşıma yöntemi kullanılır.
  • LGWR işlemi standby db tarafından herhangi bir bilgi beklemez, bundan dolayı primary-standby arasındaki problem, primary veritabanının performansını etkilemez.(DEFAULT koruma modu.)
  • Bu seviye varsayılan seviyedir ve birincil veritabanın performansında azalma olmadan koruma sağlar.
  • Birincil veritabanında işlem commit edilir ve online redo log dosyasına yazılır.
  • Bu redo loglar eşzamansız olarak ikincil veritabanına aktarılır ve işlenir.
  • Log dosyalarının aktarılmasında sorun olursa sorun düzeldikten sonra kalınan yerden işleme devam edilir.

KONTROL

Standby veritabanımızın hangi koruma modunda olduğunu görmek için aşağıdaki sorgu ile bakabiliriz.

SQL> select name,database_role,open_mode,protection_mode from v$database;

NAME     |DATABASE_ROLE   |OPEN_MODE           |PROTECTION_MODE
---------|----------------|--------------------|--------------------
TESTSENA |PRIMARY         |READ WRITE          |MAXIMUM PERFORMANCE

KORUMA MODLARI ARASINDA GEÇİŞ

  • Maximum Availability Moduna Geçiş

Maximum Availability koruma moduna geçmek için aşağıdaki komutu kullanıyoruz. Primary de yapmazsan stanby ile eşitleyeceğinden primary de yapman lazım işlemleri

SQL> alter database set standby database to maximize availability;

Database altered.
SQL> alter system set log_archive_dest_2='SERVICE=SENADR LGWR SYNC AFFIRM NET_TIMEOUT=90 REOPEN=15 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SENADR';
SQL> select name,database_role,open_mode,protection_mode from v$database;

NAME     |DATABASE_ROLE   |OPEN_MODE           |PROTECTION_MODE
---------|----------------|--------------------|--------------------
TESTSENA |PHYSICAL STANDBY|MOUNTED             |MAXIMUM AVAILABILITY

ÖRNEK: Bir insert işlemi yapalım ve uygulamalı olarak görelim

SQL> insert into a values(48);

1 row created

SQL> commit;  -- hemen commit complete demedi setlediğim net_timeout=90 dediğimiz iiçin bekledi ulaşamayınca max performance moduna geçti geç complete döndü

Commit complete.
  • Maximum Performance Moduna Geçiş
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;


SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=SENADR LGWR ASYNC REOPEN=15 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SENADR';

 SQL> select name,database_role,open_mode,protection_mode from v$database;

NAME     |DATABASE_ROLE   |OPEN_MODE           |PROTECTION_MODE
---------|----------------|--------------------|--------------------
TESTSENA |PRIMARY         |READ WRITE          |MAXIMUM PERFORMANCE

standby
SQL> select name,database_role,open_mode,protection_mode from v$database;

NAME     |DATABASE_ROLE   |OPEN_MODE           |PROTECTION_MODE
---------|----------------|--------------------|--------------------
TESTSENA |PHYSICAL STANDBY|MOUNTED             |MAXIMUM PERFORMANCE

  • Maximum Protection Moduna Geçiş

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;

Database altered.

Elapsed: 00:00:00.01

SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=SENADR LGWR SYNC AFFIRM REOPEN=15 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SENADR';
System altered.

22:52:45 SQL> select name,database_role,open_mode,protection_mode from v$database;

NAME     |DATABASE_ROLE   |OPEN_MODE           |PROTECTION_MODE
---------|----------------|--------------------|--------------------
TESTSENA |PRIMARY         |READ WRITE          |MAXIMUM PROTECTION

Kişisel Web sayfama hoş geldiniz..