Oracle Data Guard Konfigürasyonu ve Kurulumu

Merhaba Arkadaşlar,

Bu yazımda sizlere Oracle Data Guard ile Fiziksel standby kurulumunu anlatacağım bir önceki yazımda Oracle Data Guard a giriş yaptığım için bu yazımda genel kavramlardan bahsetmeyeceğim.

dataguard4

 

Oracle Data Guard teknolojisi ile veritabanlarımızda Physical ve Logical Standby lar oluşturabiliriz ben bu yazımda en çok kullanılan Physical Standby konfigürasyonunu ve kurulumunu Linux sunucu üzerindeki Oracle 11.2.0.3 veritabanını kullanarak anlatacağım.

Yazıya başlamadan önce bu kısımdan sonra Primary veritabanımız için önceki yazımda da belirttiğim TESTDB adını kullanacağım. TESTDB Primary veritabanım için oluşturacağım Physical Standby ( Disaster Recovery ) database in adı da TESTDBFKM olacaktır. Physical Standby kurulumu için Konfigürasyon ve kurulumu adım adım ilerleyeceğim.

1- Standby veritabanı sunucusunda Primary veritabanı ile software ve Patchset versiyonları aynı olacak bir Oracle Software kurulmalıdır. ( DBCA ile Veritabanı OLUŞTURULMAMALI. Ör: Primary veritabanınız 11.2.0.3 ise Standby veritabanıda 11.2.0.3 olmalıdır )

2- Standby veritabanı sunucusunda Oracle Software ile beraber NETCA ile oluşturulacak olan Physical standby ı dinleyecek bir Listener oluşturulmalı.

3- Primary veritabanı mutlak surette Archivelog modunda olması gerekiyor. Archivelog modu için ayrıntılı bilgiyi ilgili şu yazımdan okuyabilirsiniz.  Database in arşiv modunda olup olmadığını aşağıdaki sorguyla öğrenebilirsiniz.

SELECT log_mode FROM v$database;

LOG_MODE
------------
ARCHIVELOG

SQL>

Benim kurulumu yaptığım Test veritabanım Arşiv modunda, sorgu sonucu NOARCHIVELOG dönenler yukardaki linkteki yazıdan database lerini arşiv moduna alabilirler.

4- Primary veritabanında meydana gelen ( TEMP Tablespace i dışındaki ) tüm değişikliklerin loglanıp Standby a işlenmesi gerekmektedir. Primary veritabanındaki tüm değişiklerin loglanabilmesi için aşağıdaki komut Primary de çalıştırılmalıdır.

SQL> alter database force logging;

Database altered.

5- Primary veritabanında Data Guard için gerekli bazı parametreleri set ediyoruz bu parametrelerin ne olduğunu önceki yazımda anlattığım için burda tekrar anlatmayıp sadece ilgili değişikliklerin nasıl olduğunu aşağıda vereceğim. Aşağıdaki parametre değişikliğini yaptıktan sonra statik parametrelerden dolayı veritabanı kapatılıp açılmalıdır. Veritabanını kapatıp açmayı bilmeyenler ilgili şu yazımı okuyabilirler.

SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(TESTDB,TESTDBFKM)';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=TESTDBFKM LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TESTDBFKM';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/oracle/DATA/TESTDB/ARCH/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TESTDB';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
System altered.
SQL> alter system set FAL_SERVER=TESTDBFKM;
System altered.
SQL> alter system set FAL_CLIENT=TESTDB;
System altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=20;
System altered.
SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
System altered.
SQL> alter system set DB_FILE_NAME_CONVERT='/oracle/DATA/TESTDBFKM/TESTDBFKM','/oracle/DATA/TESTDB/TESTDB' scope=spfile;
System altered.
SQL> alter system set LOG_FILE_NAME_CONVERT='/oracle/DATA/TESTDBFKM/TESTDBFKM','/oracle/DATA/TESTDB/TESTDB' scope=spfile;
System altered.

6-Her iki databasede de tnsnames.ora dosyasına ilgili veritabanlarının tns adresleri aşağıdaki gibi girilir ve tnsping işlemi uygulanır. Tnsnames.ora dosyası linux sunucularda $ORACLE_HOME/network/admin dizini altında bulunur.

TESTDB =
 (DESCRIPTION=
 (ADDRESS=
 (PROTOCOL=TCP)
 (HOST=192.168.2.10)
 (PORT=1521)
 )
 (CONNECT_DATA=
 (SERVER=dedicated)
 (SID=TESTDB)
 )
 )

TESTDBFKM =
 (DESCRIPTION =
 (ADDRESS_LIST =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
 )
 (CONNECT_DATA = (SERVICE_NAME = TESTDBFKM))
)

bash-4.1$ tnsping TESTDBFKM
bash-4.1$ tnsping TESTDB

7- Primary veritabanının password dosyası Standby tarafına standby adıyla aşağıdaki gibi kopyalanır.

bash-4.1$ scp orapwTESTDB [email protected]:/oracle/product/11.2.0/db/dbs/orapwTESTDBFKM

8-Standby veritabanında adump isimli klasörü aşağıdaki gibi manuel olarak oluşturuyorum. Veritabanı açılışta bu dosyayı göremezse hata alır.

bash-4.1$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/adump

9- Şimdi son olarak Standby sunucusunda Standby veritabanı için bir pfile oluşturup henüz olmayan veritabanını nomount modda  ayağa kaldırmaya çalışıyoruz 🙂 Burda aslında nomount modda instance ayağa kalkıp background process leri sadece çalışacak. bundan sonraki adımlarda database i Primary den duplicate edeceğiz.

bash-4.1$ vi initTESTDBFKM.ora

Bu adımda istersek pfile ın içine aşağıdaki 3 parametreyi ekleyip geri kalan parametreleri rman duplicate başlatırken ekleyip başlatırız istersekte pfile ın içine bu parametreleri yazıp rman duplicate de sadece duplicate işlemini başlatırız. Ben pfile dosyasına aşağıdaki 3 parametreyip ekleyip Oracle Instance sını nomount moduyla aşağıdaki gibi açıyorum.

*.DB_NAME=TESTDB
*.DB_UNIQUE_NAME=TESTDBFKM
*.DB_BLOCK_SIZE=8192

Sunucu üzerinden profile dosyası set edildikten sonra Instance sı nomount modda başlatıyoruz.

bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jun 12 13:09:39 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 659730432 bytes
Fixed Size 2231272 bytes
Variable Size 394265624 bytes
Database Buffers 255852544 bytes
Redo Buffers 7380992 bytes
SQL>

10- Son olarak Primary database i üzerinden RMAN toolu ile duplicate işlemini aşağıdaki gibi başlatıyoruz.

bash-4.1$ rman target sys/sys@TESTDB auxiliary sys/sys@TESTDBFKM

Her iki tarafın RMAN ine bağlandıktan sonra duplicate işlemini aşağıdaki script ile başlatıyorum.
RMAN> run{
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
 parameter_value_convert 'TESTDB','TESTDBFKM'
 set db_unique_name='TESTDBFKM'
 set db_file_name_convert='/oracle/DATA/TESTDB/TESTDB','/oracle/DATA/TESTDBFKM/TESTDBFKM'
 set log_file_name_convert='/oracle/DATA/TESTDB/TESTDB','/oracle/DATA/TESTDBFKM/TESTDBFKM'
 set control_files='/oracle/DATA/TESTDBFKM/TESTDBFKM/control01.ctl'
 set log_archive_max_processes='5'
 set fal_client='TESTDBFKM'
 set fal_server='TESTDB'
 set standby_file_management='AUTO'
 set log_archive_config='dg_config=(TESTDB,TESTDBFKM)'
 set log_archive_dest_2='service=TESTDB ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=TESTDB';
}

Yukardaki RMAN Duplicate scripti çok fazla çıktı üretecektir isterseniz bunu bir log dosyasına yazdırıp her adımını inceleyebilirsiniz. Karşılaştırmanız açısından son kısmının çıktısını aşağıda veriyorum çıktı bu şekilde değilde error lar vermişse eğer muhtemelen bir hata yada eksiklik yapmışsınızdır.

                                       .
                                       .
                                       .

datafile 1 switched to datafile copy
input datafile copy RECID=2 STAMP=837509470 file name=/oracle/data/POCDBFKM/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=3 STAMP=837509470 file name=/oracle/data/POCDBFKM/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=4 STAMP=837509470 file name=/oracle/data/POCDBFKM/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=5 STAMP=837509470 file name=/oracle/data/POCDBFKM/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=6 STAMP=837509470 file name=/oracle/data/POCDBFKM/example01.dbf
Finished Duplicate Db at 12-JUN-14
RMAN>

Bu işlemin sonucunda Standby database ine bağlanıp MRP (Managed Recovery Process) process ini başlatıp ilgili logların işlenmesini başlatıyorum.

bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jun 12 16:57:40 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
TESTDBFKM
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL>

Duplicate işlemi başarılı bir şekilde gerçekleştikten sonra her iki sunucunun rolünü ve logların işlenip işlenmediği ilgili process lerin ayakta olup olmadığını aşağıdaki gibi sorgulayıp Dataguard kurulumunun başarılı olup olmadığını teyit ediyoruz.

Primary Veritabanı
--------------
bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jul 12 17:00:26 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
POCDB
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO STANDBY PRIMARY
SQL>

Standby Veritabanı
-------------------
bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jul 12 17:02:26 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
POCDBFKM
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PHYSICAL STANDBY
SQL> 
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 17 WAIT_FOR_LOG
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
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
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS LGWR 1 17 IDLE
PROCESS CLIENT_P THREAD# SEQUENCE# STATUS
--------- -------- ---------- ---------- ------------
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS ARCH 0 0 IDLE
28 rows selected.
SQL>

Yukarıda her bir veritabanının Dataguard daki rolünü ve background process lerle işlemin başarılı bir şekilde gerçekleştiğini teyit ettim. Böylece örnek bir senaryo üzerinden Primary database imin Disaster Recovery veritabanını oluşturmuş olduk. Bir sonraki yazıda görüşmek dileğiyle esen kalın..

 

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi İhtiyacınız var [email protected] adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

4 comments

  1. Merhaba Hocam,
    Aşağıdaki gibi sonuç aldım bir sorun var mıdır ?

    Status Primary:
    SQL> select DEST_NAME, status,error from v$archive_dest where dest_id = 3;

    DEST_NAME
    ——————————————————————————–
    STATUS ERROR
    ——— —————————————————————–
    LOG_ARCHIVE_DEST_3
    VALID.

    SQL> select switchover_status,database_role from v$database;

    SWITCHOVER_STATUS DATABASE_ROLE
    ——————– —————-
    NOT ALLOWED PRIMARY

    SQL>

    SQL> select switchover_status,database_role from v$database;

    SWITCHOVER_STATUS DATABASE_ROLE
    ——————– —————-
    TO PRIMARY PHYSICAL STANDBY

    SQL>

  2. Ellerine sağlık hocam.

  3. With thanks! Valuable information!

  4. I wish to show my respect for your kind-heartedness supporting folks who require guidance on the subject. Your real dedication to passing the message across came to be pretty interesting and have in every case encouraged employees much like me to reach their endeavors. Your personal valuable guide can mean a whole lot a person like me and somewhat more to my office colleagues. Thanks a lot; from all of us.

Leave a Reply

Your email address will not be published. Required fields are marked *