Merhaba Arkadaşlar,

Bu yazımda sizlere Oracle Data Guard teknolojisine 11g versiyonu ile yeni katılan Active Data Guard özelliğini anlatacağım. Bu yazımı okumadan önce Data Guard konfigurasyonu ve mimarisiyle ilgili yazımı okumanızı tavsiye ederim.

Dataguard2

Data Guard ilk yazımda da bahsettiğim gibi Oracle 7 de Manuel Standby oluşturmaya imkan tanıyarak ilgili teknoloji hayatımıza girdi. Daha sonraki sürümlerde bir sürü özellikler eklenerek günümüze kadar geldi. Oracle 11g sürümünde ise bu özelliklerin dışında çok ilgi çeken bir özellik daha geldi bu özellik işte yazıma konu olan Active Standby yada Active Data Guard özelliğidir.

Peki nedir bu Active Dataguard özelliği bize neler sunmaktadır ? Active Data Guard, Standby veritabanında Primary veritabanından gelen Redo verileri gerçek zamanlı apply edilirken Standby veritabanının Read Only (Salt okunur) modda kullanıcılara erişim imkanı sağlamasıdır. Buda standby database ini Read Only modda kullanabileceğimiz anlamına gelir.

Bu özelliği kullanarak çok yoğun kullanılan Production sistemlerde Rapor gibi sisteme çoğu zaman büyük yükler getiren işleri Standby database ine yönlendirebilir böylece Production sistemin yükünü azaltabiliriz. Ayrıca yine Production veritabanını rahatlatmak amacıyla gerekli backup larıda burdan alarak Production (Canlı Veritabanımız) ortamını rahatlatabilir daha performanslı çalışmasını sağlayabiliriz.

Peki bu güzel özellik ücretsiz mi ? Tabiki hayır 🙂 Oracle ın her güzel özelliği ayrıca lisanslandığı gibi Active Data Guard özelliği de Oracle Enterprise Edition ile ayrıca lisanslanıyor. Her ne kadar Cepleri yaksada çok yoğun kullanılan sistemlerde bu özellik performans açısından mutlaka kullanılmalıdır.

Şimdi bu özelliğin nasıl kullanıldığını önceki yazımda kurduğum Standby veritabanım üzerinde bir örnekle göstereceğim. Active Data Guard özelliğini aşağıdaki gibi maddeler halinde anlattığım gibi aktifleştirebiliriz.

1. Standby veritabanın daki Redo apply işlemi durdurulur. Redo Apply işlemini MRP process i yapıyordu kısaca bu process i durduruyoruz. Durdurmadan önce bu process aşağıdaki gibi çalışıyordu.

SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
TESTDBFKM
SQL> select process, client_process,thread#,sequence#,status from v$managed_standby;
PROCESS CLIENT_P THREAD# SEQUENCE# STATUS
--------- -------- ---------- ---------- ------------
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
MRP0 N/A 1 8 WAIT_FOR_LOG
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS ARCH 0 0 IDLE
RFS LGWR 1 9 IDLE
10 rows selected.
SQL>

Bu process i aşağıdaki kod ile durduruyoruz. Böylece Redo Apply işlemi durdurulmuş oluyor.

SQL> alter database recover managed standby database cancel;
Database altered.
SQL>

Tekrar yukardaki sorguyu çalıştırdığımda aşağıda göründüğü gibi MRP (Managed Recovery Process) process i artık çalışmıyor.

SQL> select process, client_process,thread#,sequence#,status from v$managed_standby;
PROCESS CLIENT_P THREAD# SEQUENCE# STATUS
--------- -------- ---------- ---------- ------------
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS ARCH 0 0 IDLE
RFS LGWR 1 9 IDLE
9 rows selected.
SQL>

2. Aşağıdaki gibi Mount modda olan Standby database ini Read Only modda açıyoruz.

SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
TESTDBFKM
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> alter database open read only;
Database altered.
SQL>

3. Read Only modda başlatılan Standby database inde Redo Apply işlemi aşağıdaki gibi tekrar başlatılır.

SQL> alter database recover managed standby database disconnect using current logfile;
Database altered.

Redo apply işlemi başlatıldığı zaman veritabanımızın açılma modunu sorguluyoruz. Başta sorguladığımızda 2.adımda ki gibi mount moddaydı database imiz. Şimdi sorguladığımızda READ ONLY WITH APPLY çıkması gerekmektedir.

SQL> select open_mode from v$database;
OPEN_MODE
 --------------------
 READ ONLY WITH APPLY
SQL>

Artık Standby veritabanımızda Productiondaki herhangi bir tabloyu kısa bir süre sonra okuyabiliriz. Aşağıda bunun için küçük bir örnek yaptım. Production Veritabanımda Deneme adında bir tablo oluşturup buraya kayıt ekleyip veriyi commitledikten sonra Standby veritabanımda ilgili tabloyu okuyorum.

Primary Veritabanı

SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
TESTDB
SQL> create table deneme(name varchar2(30));
Table created.
SQL> insert into deneme values('Mehmet Salih Deveci');
1 row created.
SQL> r
 1* insert into deneme values('Mehmet Salih Deveci')
1 row created.
SQL> r
 1* insert into deneme values('Mehmet Salih Deveci')
1 row created.
SQL> r
 1* insert into deneme values('Mehmet Salih Deveci')
1 row created.
SQL> commit;
Commit complete.
SQL>

Şimdi Standby tarafına gidip ordan ilgili tabloyu sorguluyorum ve aşağıdaki gibi Production da oluşturulup kayıt eklenen tablo Standby a geliyor ve ben o tabloyu sorgulayabiliyorum.

Standby Veritabanı

SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
TESTDBFKM
SQL> select * from deneme;
NAME
------------------------------
Mehmet Salih Deveci
Mehmet Salih Deveci
Mehmet Salih Deveci
Mehmet Salih Deveci
SQL>

Active Data guard özelliğini örnek ile gösterdikten sonra bu yazımın sonuna gelmiş bulunmaktayım. Bir sonraki yazıda görüşmek dileğiyle Esen kalın…

Mehmet Salih Deveci

Oracle Veritabanı Yöneticisi

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s