Oracle GoldenGate 11g R2 Kurulum, Yapılandırma ve Yönetimi

OracleGGBu makalemizde Oracle’ın “Fussion Middleware” ürün grubuna dahil ettiği disaster çözümü, kritik sistemlerindeki sürekliliği sağlamak için kullanılan “Oracle GoldenGate” ürününü inceleyceğiz. Kurulum işlemlerimizi “Oracle Enterprise Linux 6.4” İşletim sistemi üzerinde yapacağız.

Oracle GoldenGate Nedir?

Oracle ‘ın Fussion Middleware ürün grubuna dahil ettiği Oracle GoldenGate, veritabanları arasında mevcut datanın DML, DDL, DCL ve TCL replikasyonuna olanak sağlayan bir yazılım çözümüdür. Bu cümleyi kısaca açıklamak gerekirse, Oracle GoldenGate sayesinde kaynak veritabanı üzerinde yapılan işlemlerin kayıtlarını istediğimiz hedef veritabanları üzerine dilersek gerçek zamanlı veya gecikmeli olarak aktarıp, işletebiliriz. Bu aktarım işlemi kaynak veritabanında yapılan bütün işlemleri kapsayabileceği gibi, spesifik olarak sadece bir seqeunce ‘in, tablonun veya şemanın aktarımı olarak da yapılabilir.

Oracle GoldenGate ‘in önemli özelliklerinden biride hibrit yapıya sahip olmasıdır. Kaynak veritabanı Oracle olabileceği gibi hedef veritabanı MS-SQL Server veya tersi olabilir. Oracle GoldenGate hibrit yapısı sayesinde kros platform veya database ‘de replikasyon yapılmasına destek verebilmektedir. Bunlara örnek; Oracle, MS-SQL, Postgre SQL, MySQL ve IBM DB2.

Oracle GoldenGate kaynak ve hedef sunuculara ayrı olarak kurulur ve sunucuların konfigrasyonları birbirinden farklıdır. Kaynak sunucuda Extract ve Pumper ismini verdiğimiz servisler çalışırken, hedef sunucuda Collector ve Replicat ismini verdiğimiz servisler çalışır. Bunların haricinde her iki sunucuda ortak olarak Manager servisleri hizmet verir. Şimdi kısaca bu terimleri açıklayalım.

Manager: İsminden de anlaşılacağı üzere bu servis Oracle GoldenGate ‘in yönetim servisidir. Hem kaynak hemde hedef sunucularda çalışır. GoldenGate ‘in konfigrasyonu bu servis üzerinden yönetilir.  Örnek; Extract process ‘i tarafından üretilen trail dosyalarını takip edilmesi ve raporlama işlemleri bu servisin yönetimi altındadır. Extract, pumper ve replicat servislerinin çalışabilmesi için Manager ervisinin çalıştırılması gereklidir.  Extract servisi tarafından üretilen trail dosyalarının ne kadar süre saklanacağı vs. bilgileri Manager servisi üzerinden kontrol edilir.

Extract: Kaynak veritabanı üzerinde çalışan bu servis, veritabanında gerçekleştirilen bütün işlemlerin kaydını yakalamakla görevlidir. Bu kayıtları öncelikle Online Redolog (RBA numaralarından çıkartılır) dosyalarından veya  archive dosyaları üzerinden toplanır.

Pumper: Bu servisin görevi Extract process ‘i tarafından oluşturulan trail dosyalarını hedef sunucuya Manager servisi üzerinde tanımlı 7809 portu (TCP/IP) üzerinden göndermektir.

Replicat: Replicat servisi adından da anlaşılacağı üzere, kaynak sunucu üzerinde çalışan Pumper process ‘i tarafından gönderilen trail dosyalarının hedef veritabanına işlenmesinden sorumludur. Gelen trail dosyalarını gerçek zamanlı olarak (online) işletebileceğiniz gibi parametreler yardımıyla belirteceğiniz bir süre vasıtasıyla gecikmeli olarakta işletebilirsiniz.

Collector: Collector servisi GoldenGate ‘in bir background servisidir ve sadece hedef sunucu üzerinde çalışır. Bu servis gönderilen trail dosyalarını işleyerek Replicat servisinin kullanabileceği formata getirilmesinden sorumludur.

Oracle GoldenGate Kullanım Amaçları

  • İş sürekliliğinin devamı ve high availability ortamlarının hazırlanması
  • Veritabanında bulunan datanın taşınması veya upgrade işlemleri
  • Veriambarı oluşturmak için (Data Warehousing)
  • Data entegrasyonu ve konsolidasyon işlemleri

Oracle GoldenGate için ilk etapta yapacağımız yazılımı kurmak olacaktır,yazılımı kurduktan sonra konfigürasyon yapabiliriz. Biz denemelerimizi “Oracle Enterprise Linux” üzerinde yapacağız. İlk olarak Golden Gate ürününü indirmemiz gerekiyor. “Oracle Software Delivery Cloud” sayfasından ürünü indirebiliriz. Oracle Media Pack aramasından Product type olarak Oracle Fusion Middleware ve ilgili işletim sistemini seçiyoruz. Ürün paketi olarak Oracle GoldenGate on Oracle Media Pack for Linux x86-64 olarak seçiyoruz. Daha sonra gelen listeden işletim sistemimizin tipine ve kullandığımız veritabanı versiyonuna göre seçim yapabiliriz

İşletim sistemi kurulumu için “Oracle Enterprise Linux Kurulumu” makalemizi kullanabilirsiniz.

Veritabanı kurulumu için tercihimize göre;

Oracle Grid Infrastructure ile Single Instance (Standalone) Veritabanı Kurulumu

Oracle Enterprise Linux İşletim Sisteminde Standalone (Single Instance) Oracle Veritabanı Kurulumu

Oracle Enterprise Linux İşletim Sisteminde Oracle Real Application Cluster (Rac) Veritabanı Kurulumu

makalelerimizi kullanabilirsiniz.

1. İşletim Sistemi ve Veritabanı kurulum işlemlerimizi tamamladıktan sonra “Oracle GoldenGate” kurulumuna başlayabiliriz. Kuruluma başlayabilmek için öncelikle “Oracle GoldenGate” yazılımının kullanacağı dizinleri her iki sunucumuzda yaratıyoruz.

-- Aşağıdaki işlemleri "oracle" kullanıcısı ile yapıyoruz.
$ mkdir /u01/app/goldengate
$ mkdir /u01/app/goldengate/discard

2. Kuruluma geçebilmemiz için ftp yada başka bir yöntem ile kurulum dosyalarımızı her iki sunucumuzda oluşturduğumuz “/u01/orainstall/gg” dizini altına atıyoruz. Eğer sunucumuzda ftp server özelliği aktif edilmemişse “Linux İşletim Sistemlerinde FTP Server Yapılandırması” makalemizden faydalanarak gerekli ayarları yapabiliriz.

3. Kurulum için “/u01/app/goldengate” altına koyduğumuz kurulum dosyalarımızı  her iki sunucumuzda açıyoruz.

$ cd /u01/app/goldengate
$ unzip V34339-01.zip
$ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

-- Diskimizde yer kaplamaması için kurulum dosyalarını silebiliriz.
$ rm V34339-01.zip
$ rm fbo_ggs_Linux_x64_ora11g_64bit.tar

4. Sunucumuzda bulunan “oracle” kullanıcısına ait “.bash_profile” dosyamızı her iki sunucumuzda aşağıdaki gibi düzenliyoruz.

# Oracle bash_profile Environment Settings

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=koraykey-db1.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_HOME_LISTNER=$ORACLE_HOME export ORACLE_HOME_LISTNER
GG_HOME=/u01/app/goldengate export GG_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$GG_HOME:$ORACLE_HOME/OPatch:$PATH:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/lib:$GG_HOME; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

5. Değişkenlerimizi hemen geçerli olabilmesi için aşağıdaki komutları çalıştırıyoruz.

$ export PATH=$PATH:/u01/app/goldengate
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/goldengate

6. Oracle GoldenGate kurulum işlemine başlayabiliriz. Aşağıdaki adımları sırasıyla her iki sunucumuzda yapacağız.

$ cd /u01/app/goldengate

$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (koraykey-db1.localdomain) 1> CREATE SUBDIRS

Creating subdirectories under current directory /u01/app/goldengate

Parameter files                /u01/app/goldengate/dirprm: created
Report files                   /u01/app/goldengate/dirrpt: created
Checkpoint files               /u01/app/goldengate/dirchk: created
Process status files           /u01/app/goldengate/dirpcs: created
SQL script files               /u01/app/goldengate/dirsql: created
Database definitions files     /u01/app/goldengate/dirdef: created
Extract data files             /u01/app/goldengate/dirdat: created
Temporary files                /u01/app/goldengate/dirtmp: created
Stdout files                   /u01/app/goldengate/dirout: created

GGSCI (koraykey-db1.localdomain) 2> exit

Gacle GoldenGate tarafından kullanılacak "Extract" ve "Replicat" prosesleri
için bir veritabanı kullanicısı oluşturup, haklarını vermeliyiz. Öncelikle
oluşturacağımız kullanıcımızın kullanması için bir "tablespace" ardınan
"user" yaratıyoruz. Sonrasında yaratmış olduğumuz kullancıya gerekli hakları
veriyoruz.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 02:40:28 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> create tablespace goldengate datafile size 256m autoextend on next 10m maxsize unlimited;
Tablespace created.

-- Not: Veritabanında OMF (Oracle Managed File) kullandığım için tablespace
yolunu vermedim.

SQL> create user goldengate identified by goldengate default tablespace goldengate;
User created.

SQL> grant connect,resource to goldengate;
Grant succeeded.

SQL> grant select any dictionary, select any table to goldengate;
Grant succeeded.

SQL> grant create table to goldengate;
Grant succeeded.

SQL> grant flashback any table to goldengate;
Grant succeeded.

SQL> grant execute on dbms_flashback to goldengate;
Grant succeeded.

SQL> grant execute on utl_file to goldengate;
Grant succeeded

SQL> grant alter any table to goldengate;
Grant succeeded

7. Oracle veritabanı tarafında yapmamız gereken işlemlerden biri veritabanlarımızın “Archivelog” modunun açık olduğunu kontrol etmemiz olacaktır. Eğer açık değilse aşağıdaki işlemlerle açabiliriz. “Archivelog” mod her iki sunucumuzda açık olmalıdır.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 01:57:21 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 log_mode from v$database;

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

-- Eğer yukarıdaki gibi archive log modumuz açık değilse (NOARCHIVELOG) açmak için
aşağıdaki adımları izlemeliyiz.

-- Veritabanımızı tutarlı bir şekilde kapatıyoruz.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

-- Veritabanımızı "mount" modda açıyoruz.

SQL> startup mount;
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size                  2235208 bytes
Variable Size             641729720 bytes
Database Buffers          419430400 bytes
Redo Buffers                5541888 bytes
Database mounted.

-- Veritabanımızı "ARCHIVELOG" moda alıyoruz.

SQL> alter database archivelog;
Database altered.

-- Veritabanımızı açıyoruz.

SQL> alter database open;
Database altered.

-- Tekrar sorguladığımızda "ARCHIVELOG" modda olduğunu görüyoruz.

SQL> select log_mode from v$database;   
LOG_MODE
------------
ARCHIVELOG

8. Veritabanında da “Supplemental Logging” özelliğini her iki sunucumuzda aktif ederek veritabanının ek olarak log çıkartmasını sağlayacağız.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 02:22:50 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> alter database add supplemental log data (all) columns;

Database altered.

9. Veritabanında da “Supplemental Logging” özelliğini her iki sunucumuzda tüm tablolarda aktif ettik eğer sadece belli tablolarda bu işlemi yapacaksak “GoldenGate” komut satırından “ADD TRANDATA” komutu ile tablo ismi belirleyerek ekleyebiliriz.

-- Oracle GoldenGate yöneticisine bağlanırken aşağıdaki gibi bir hata alırsak

GGSCI (koraykey-db1.localdomain) 1> DBLOGIN USERID goldengate, PASSWORD goldengate;
Cannot load ICU resource bundle 'ggMessage', error code 2 - No such file or directory
Aborted (core dumped)

gibi bir hata alırsak aşağıdaki adımları izlemeliyiz.

-- İşletim Sistemi seviyesinde "ggMessage.dat" dosyasına okuma hakkı veriyoruz.

$ cd $GG_HOME
$ chmod 644 ggMessage.dat
$ ls -l ggMessage.dat

-rw-r--r-- 1 oracle oinstall 1280336 Aug 24  2012 ggMessage.dat

-- Ardından aşağıdaki gibi oturum açmayı denediğimizde çalıştığını göreceğiz.

$ cd $GG_HOME
$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (koraykey-db1.localdomain) 1> DBLOGIN USERID goldengate, PASSWORD goldengate;
Successfully logged into database.

GGSCI (koraykey-db1.localdomain) 2> 

-- Şimdi "ADD TRANDATA" komutu ile  "ADD TRANDATA" komutu ile tablo bazında
ayarlama yapalım.

GGSCI (koraykey-db1.localdomain) 2> ADD TRANDATA KORAYKEY.TEST

Logging of supplemental redo data enabled for table KORAYKEY.TEST

10. Veritabanımız Oracle 10g ise Oracle GoldenGate ile DDL (Data Definition Language) işlemleri (create, alter, drop, truncate) yapacaksak her iki sunucumuzda aşağıdaki işlemleri yapmamız gerekiyor. Eğer veritabanımız Oracle 11g ise Çöp Kutusu (recycle bin) açık olabilir.

-- DDL işlemleri için Oracle 10g Veritabanlarında Çöp Kutusu (recycle bin)
özelliği kapalı olmalıdır.

SQL> ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE;
System altered.

-- Veritabanımızı kapatıyoruz.

SQL> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

-- Veritabanımızı yeniden başlatıyoruz.

SQL> startup;
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2235208 bytes
Variable Size             650118328 bytes
Database Buffers          411041792 bytes
Redo Buffers                5541888 bytes
Database mounted.
Database opened.

-- Kontrol ettiğimizde "OFF" durumda olduğunu görüyoruz.

SQL> show parameter recycle;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
buffer_pool_recycle                  string
db_recycle_cache_size                big integer 0
recyclebin                           string      OFF

11. Veritabanımızda Oracle GoldenGate ile DDL (Data Definition Language) işlemleri için gerekli scriptlerimizi her iki sunucumuzda çalıştırıyoruz. Scriptlerimiz çalışırken bizden şema ismimizi soracaktır. Önceki adımlarda yarattığımız şema ismini (goldengate) burada yazıyoruz.

$ cd $GG_HOME

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:17:18 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

-- Birinci scriptimizi çalıştırıyoruz.

SQL> @marker_setup.sql;

Marker setup script

You will be prompted for the name of a schema for the Oracle 
GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:goldengate

Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GOLDENGATE

MARKER TABLE
-------------------------------
OK

MARKER SEQUENCE
-------------------------------
OK

Script complete.

-- İkinci Scriptimizi çalıştırıyoruz.

SQL> @ddl_setup.sql;

Oracle GoldenGate DDL Replication setup script

Verifying that current user has privileges to install DDL Replication...

You will be prompted for the name of a schema for the Oracle GoldenGate
database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled.
For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:goldengate

Working, please wait ...
Spooling to file ddl_setup_spool.txt

Checking for sessions that are holding locks on Oracle Golden Gate 
metadata tables ...

Check complete.

Using GOLDENGATE as a Oracle GoldenGate schema name.

Working, please wait ...

DDL replication setup script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GOLDENGATE

CLEAR_TRACE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

CREATE_TRACE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

TRACE_PUT_LINE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

INITIAL_SETUP STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDLVERSIONSPECIFIC PACKAGE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDLREPLICATION PACKAGE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDLREPLICATION PACKAGE BODY STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDL IGNORE TABLE
-----------------------------------
OK

DDL IGNORE LOG TABLE
-----------------------------------
OK

DDLAUX  PACKAGE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDLAUX PACKAGE BODY STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

SYS.DDLCTXINFO  PACKAGE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

SYS.DDLCTXINFO  PACKAGE BODY STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDL HISTORY TABLE
-----------------------------------
OK

DDL HISTORY TABLE(1)
-----------------------------------
OK

DDL DUMP TABLES
-----------------------------------
OK

DDL DUMP COLUMNS
-----------------------------------
OK

DDL DUMP LOG GROUPS
-----------------------------------
OK

DDL DUMP PARTITIONS
-----------------------------------
OK

DDL DUMP PRIMARY KEYS
-----------------------------------
OK

DDL SEQUENCE
-----------------------------------
OK

GGS_TEMP_COLS
-----------------------------------
OK

GGS_TEMP_UK
-----------------------------------
OK

DDL TRIGGER CODE STATUS:

Line/pos   Error
---------- ------------------------
No errors  No errors

DDL TRIGGER INSTALL STATUS
-----------------------------------
OK

DDL TRIGGER RUNNING STATUS
-----------------------------------
ENABLED

STAYMETADATA IN TRIGGER
-----------------------------------
OFF

DDL TRIGGER SQL TRACING
-----------------------------------
0

DDL TRIGGER TRACE LEVEL
-----------------------------------
0

LOCATION OF DDL TRACE FILE
-----------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/ggs_ddl_trace.log

Analyzing installation status...

STATUS OF DDL REPLICATION
-----------------------------------
SUCCESSFUL installation of DDL Replication software components

Script complete.

-- Üçüncü Scriptimizi çalıştırıyoruz.

SQL> @role_setup.sql;

GGS Role setup script

This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql
script to change the gg_role parameter to the preferred name.
(Do not run the script.)

You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:goldengate
Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.

Role setup script complete

Grant this role to each user assigned to the Extract, GGSCI,
and Manager processes, by using the following SQL command:

GRANT GGS_GGSUSER_ROLE TO <loggedUser>

where <loggedUser> is the user assigned to the GoldenGate processes.

-- Dördüncü Scriptimizi çalıştırıyoruz.

SQL> grant GGS_GGSUSER_ROLE to goldengate;
Grant succeeded.

SQL> @ddl_enable.sql;
Trigger altered.

12. Sunucumuzda “Oracle GoldenGate” ile ilgili ayarları tamamladık şimdi basit bir replikasyon testi gerçekleştirerek ayarlarımızı kontrol edelim. Bu işlem için öncelikle kaynak ve hedef veritabanlarımızda farklı isimlerle birer kullanıcı oluşturup gerekli hakları verelim.

-- Kaynak (Veri Gönderen) Veritabanında

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:56:22 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> create user kaynak identified by kyn123 default tablespace users temporary tablespace temp;
SQL> grant connect,resource,unlimited tablespace to kaynak;
SQL> grant select any dictionary, select any table to kaynak;
SQL> grant create table to kaynak;
SQL> grant flashback any table to kaynak;

-- Hedef (Veri Alan) Veritabanında

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:57:35 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> create user hedef identified by hdf123 default tablespace users temporary tablespace temp;
SQL> grant connect,resource,unlimited tablespace to hedef;
SQL> grant select any dictionary, select any table to hedef;
SQL> grant create table to hedef;
SQL> grant flashback any table to hedef;

13. Oracle GoldenGate “Extract” process’ni kullanarak replikasyonumuza başlayalım. Her iki sunucuda bu servisimizi başlatıyoruz.

-- Aşağıdaki işlemleri her iki sunucumuzda yaparak manager servisini
başlatıyoruz.

$ cd $GG_HOME
$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (koraykey-db1.localdomain) 1> edit params mgr

-- Açılan VI Editör ekranında dosyamızın içeriğine

PORT 7809

yazarak kaydedip çıkıyoruz.

GGSCI (koraykey-db1.localdomain) 2> start manager

Manager started.

GGSCI (koraykey-db1.localdomain) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

-- Kaynak sunucumuzdan "extract" işlemine başlıyoruz. Buradaki işlemler
sadece kaynak sunucumuzda yapılacaktır.
GGSCI (koraykey-db1.localdomain) 4> add extract ext1, tranlog, begin now
EXTRACT added.

-- Extract işlemi oluştuktan sonra yakalanan işlemleri yerelde bir alana
yazması için Trail servisimizi ayarlıyoruz. Burada dizin ismi 2 karekteri
geçmemelidir.
GGSCI (koraykey-db1.localdomain) 5> ADD EXTTRAIL /u01/app/goldengate/dirdat/ex, EXTRACT EXT1
EXTTRAIL added.

GGSCI (koraykey-db1.localdomain) 6> ADD RMTTRAIL /u01/app/goldengate/dirdat/lt, EXTRACT EXT1
RMTTRAIL added.

GGSCI (koraykey-db1.localdomain) 7> edit params ext1

-- Parametrelerimizi düzenliyoruz. Burada açılan VI Editör ekranında
aşağıdaki değişkenleri giriyoruz.

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0.3/db")
SETENV (ORACLE_SID = "orcl")
EXTRACT ext1
USERID goldengate, PASSWORD goldengate
--EXTTRAIL /u01/app/goldengate/dirdat/ex
RMTHOST KORAYKEY-DB2, MGRPORT 7809
ddl include mapped objname kaynak.*;
RMTTRAIL /u01/app/goldengate/dirdat/lt
TABLE kaynak.*;

-- Servislerimizin durumunu kontrol ediyoruz.

GGSCI (koraykey-db1.localdomain) 8> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT1        00:00:00      00:08:51

-- Kaynak sunucumuzda yapılandırmamız bitti. Şimdi hedef tarafı için 
tanımlamalarımızı yapalım.
-- Aşağıdaki işlemleri sadece hedef sunucumuzda yapıyoruz.
-- Hedef taraftaki trail dosyalarını okuyup veritabanına yazacak
servisimizi yapılandırıyoruz.

$ cd $GG_HOME
$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle GoldenGate dizini içerisinde "GLOBAL" dosyamızı açarak içerisine
tüm replikasyon bilgilerini tutan "CHECKPOINTTABLE" tablomuzun ismini
yazabilir. Bu adım zorunlu değildir. İstenildiği takdirde bir sonraki
adımla yapılabilir.

GGSCI (koraykey-db2.localdomain) 1> edit params ./GLOBAL

-- Açılan VI Editör ekranında aşağıdaki parametreleri giriyoruz.

GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint

-- Aynı işlemi komutlarla yapabiliriz.
GoldenGate sistemimizde oturum açıyoruz.

GGSCI (koraykey-db2.localdomain) 2> dblogin userid goldengate
Password: 
Successfully logged into database.

GGSCI (koraykey-db2.localdomain) 3> add checkpointtable goldengate.checkpoint

Successfully created checkpoint table goldengate.checkpoint.

GGSCI (koraykey-db2.localdomain) 4> add replicat rep1, 
exttrail /u01/app/goldengate/dirdat/lt,checkpointtable goldengate.checkpoint
REPLICAT added
(Komut yan yana olmalıdır)

-- Oracle GoldenGate "Replicat" servisinin parametre ayalarını yapıyoruz ve
discard dizinine 10 mb'lık dosyalar halinde yazacağını belirtiyoruz.

GGSCI (koraykey-db2.localdomain) 5> edit params rep1

-- Açılan VI Editör ekranında aşağıdaki parametreleri giriyoruz.

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0.3/db")
SETENV (ORACLE_SID = "orcl")
REPLICAT rep1
ASSUMETARGETDEFS
userid goldengate, password goldengate
discardfile /u01/app/goldengate/discard/rep1.txt, append, megabytes 10
DDL
map kaynak.*, target hedef.*;

-- Kaynak tarafta "extract" servisini başlatıyoruz.

GGSCI (koraykey-db1.localdomain) 9> start extract ext1
Sending START request to MANAGER ...
EXTRACT EXT1 starting

GGSCI (koraykey-db1.localdomain) 10> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT1        00:00:00      00:00:01

Hedef tarafta "replicat" servisini başlatıyoruz.

GGSCI (koraykey-db2.localdomain) 6> start replicat rep1

Sending START request to MANAGER ...
REPLICAT REP1 starting

GGSCI (koraykey-db2.localdomain) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     REP1        00:00:00      00:00:06

Servislerimizin durumu aşağıdaki komut ile kontrol edebiliriz.
Kaynak sunucumuzda "extract" servisinin durumunu sorgulamak için
aşağıdaki komutu kullanabiliriz.

GGSCI (koraykey-db1.localdomain) 11> view report ext1

***********************************************************************
                 Oracle GoldenGate Capture for Oracle
 Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
   Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:32:12

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2013-04-16 05:31:48
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Thu Apr 4 03:49:00 PDT 2013
Node: koraykey-db1.localdomain
Machine: x86_64
                         soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimited

Process id: 28427
.
.
.

-- Hedef sunucumuzda "Replicat" servisinin durumunu sorgulamak için
aşağıdaki komutu kullanabiliriz.

GGSCI (koraykey-db2.localdomain) 8> view report rep1

***********************************************************************
                 Oracle GoldenGate Delivery for Oracle
 Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
   Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:37:31

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2013-04-16 05:32:17
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Thu Apr 4 03:49:00 PDT 2013,
Node: koraykey-db2.localdomain
Machine: x86_64
                         soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimited

Process id: 27717
.
.
.

14. Oracle GoldenGate yapılandırmamızın doğru çalıştığını kontrol edebilmek için bazı testlerimizi yapalım. Öncelikle kaynak sunucumuzda bir tablo yaratıp içine bir kaç satır bilgi giriyoruz.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 16:08:25 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> conn kaynak/kyn123;
Connected.

SQL> create table gldgate (DURUM varchar2(20));
Table created.

SQL> insert into gldgate values('GOLDENGATE-TEST');
1 row created.

SQL> insert into gldgate values('GOLDENGATE-TEST1');
1 row created.

SQL> insert into gldgate values('GOLDENGATE-TEST2');
1 row created.

SQL> commit;
Commit complete.

SQL> select * from gldgate;
DURUM
--------------------
GOLDENGATE-TEST
GOLDENGATE-TEST1
GOLDENGATE-TEST2

15. Hedef sunucumuzda kaynak sunucu üzerinde yarattığımız tablo ve bilgilerin gelip gelmediğini kontrol ediyoruz.

$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 16:17:33 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> conn hedef/hdf123;
Connected.

SQL> select * from gldgate;
DURUM
--------------------
GOLDENGATE-TEST
GOLDENGATE-TEST1
GOLDENGATE-TEST2

-- Görüldüğü gibi hedef sunucumuzda tablomuz ve bilgilerimiz replikasyon olmuş
durumdadır.

16. Oracle GoldenGate servislerimizde bir değişiklik olması durumunda veya  “info all” komutu ile sorguladığımızda servis durumunu “ABENDING” görüyorsak aşağıdaki işlemlerle çözebiliriz.

$ cd GG_HOME
$ ggsci

GGSCI (koraykey-db2.localdomain) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    ABENDING     REP1        00:00:00      00:00:05

-- Servisimiz ABENDING durumda

GGSCI (koraykey-db2.localdomain) 2>  stop replicat rep1
Sending STOP request to REPLICAT REP1 ...
Request processed.

GGSCI (koraykey-db2.localdomain) 3> alter rep1 begin now
REPLICAT altered.

GGSCI (koraykey-db2.localdomain) 4>  start replicat rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting

GGSCI (koraykey-db2.localdomain) 5> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     REP1        00:00:00      00:00:08

-- Servisimiz çalışır durumda.

17. Oracle GoldenGate istatisliklerini aşağıdaki komut ile sorgulayabiliriz.

$ cd $GG_HOME
$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (koraykey-db1.localdomain) 1> stats *

Sending STATS request to EXTRACT EXT1 ...

No active extraction maps
DDL replication statistics (for all trails):

*** Total statistics since extract started     ***
        Operations                                         1.00
        Mapped operations                                  1.00
        Unmapped operations                                0.00
        Other operations                                   0.00
        Excluded operations                                0.00
.
.
.

Oracle GoldenGate sunucumuz hazır artık kullanabiliriz. Bu makalemizde “Oracle Enterprise Linux 6.4” İşletim Sistemi üzerinde Oracle GoldenGate Kurulum, Yapılandırma ve Yönetimini inceledik.

Bir sonraki makalemizde görüşmek üzere…

Bu yazı Oracle kategorisine gönderilmiş ve , , , , , , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.