GOLDEN GATE 19.1.0.4 MIKROSERVICE INSTALATION AND CONFIGURATION

Bir önceki yazımızda GoldenGate Mimarisi ile ilgili bilgiler vermeye çalışmıştık, bu yazımızda, GoldenGate Microservice Mimarisi kurulumu ve HTML ara yüzünü tanıyacağız. Üzerine de bir Tablo replikasyonu yaparak testlerini gerçekleştireceğiz.

Kaynak Veriabanımız:

  • Hostaname: sourcegg
  • IP: 150.150.100.201
  • DB Version : 11.2.0.4
  • SID . ORCLSDB

Hedef Veritabanı

  • Hostname : targetgg
  • IP : 150.150.100.191
  • DB Verison: 19.3.0.0
  • SID: ORCLDB

Kurulum her iki makinemiz içinde aynı aşamaları içeriyor o yüzden sadece sourcegg makinesi için burada anlatılacak.

Kurulum için ortam değişkenleri oldukça önemli, o yüzden dikkat edelim, oracle user için bash_profile aşağıdaki gibidir.

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

ORACLE_HOSTNAME=sourcegg.ttnet.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=ORCLSDB; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.4/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.4/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=ORCLSDB; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch:$BASE_PATH; export PATH

export OGG_HOME=/u01/app/ogg/oggma


export PATH=$ORACLE_HOME/bin:$OGG_HOME/bin:$BASE_PATH

export TNS_ADMIN=/u01/app/oracle/product/11.2.0.4/db/network/admin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LD_LIBRARY_PATH=${OGG_HOME}lib:${LD_LIBRARY_PATH}

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

vi .bas

#mkdir -p /u01/app/ogg/oggma
#chown -R oracle:oinstall /u01/app/ogg/
#chmod 775 -R  /u01/app/ogg/

[oracle@sourcegg Software]$ pwd
/home/oracle/Software
[oracle@sourcegg Software]$ ls
V983659-01.zip
[oracle@sourcegg Software]$ unzip V983659-01.zip

[oracle@sourcegg Software]$ cd fbo_ggs_Linux_x64_services_shiphome/Disk1/
[oracle@sourcegg Disk1]$ ./runInstaller

Kurulum başarı ile bittikten sonra $OGG_HOME/bin dizinine gidiyoruz

[oracle@sourcegg Disk1]$ cd $OGG_HOME/bin
[oracle@sourcegg bin]$ ./oggca.sh &

Değişkenleri Kontrol ediyoruz alınacak hataların önemli bir kısmı bu değişkenlerin yanlış set edilmesinden kaynaklanacaktır. O yüzden eksik bir değişken var ise burada düzeltebiliriz.

Bu konfigurasyonu silip tekrar kurmak istersek (kurulum sırasında hata alırsak) önce deinstall yapmamız sonra ise aşağıdaki dosyaları silmemiz gerekmektedir.

/etc/systemd/system/OracleGoldenGate.service
/etc/oggInst.loc
[root@sourcegg ~]# /u01/app/ogg/oggma_deploy/bin/registerServiceManager.sh
Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
----------------------------------------------------
     Oracle GoldenGate Install As Service Script
----------------------------------------------------
OGG_HOME=/u01/app/ogg/oggma
OGG_CONF_HOME=/u01/app/ogg/oggma_deploy/etc/conf
OGG_VAR_HOME=/u01/app/ogg/oggma_deploy/var
OGG_USER=oracle
Running OracleGoldenGateInstall.sh...
Created symlink from /etc/systemd/system/multi-user.target.wants/OracleGoldenGate.service to /etc/systemd/system/OracleGoldenGate.service.

Kurulum taamlandı şimdi tarayıcımızdan ilgili servislerin web sayfalarına bakalım. Öncelikle http://150.150.100.201:9001 açtığımızda bize bir login ekranı gelecek belirlediğimiz oggadmin user ve paralosı ile giriş yapıyoruz.

Buradan bütün çalışan serverlara ilgili portların üzerine tıklayarak gidebiliriz.

Komut satırı üzerinden bir kontrol sağlayalım.

[oracle@sourcegg bin]$ adminclient

OGG (not connected) 2> connect http://150.150.100.201:9001 deployment sourcedp as oggadmin Password  Welcome1


OGG (http://150.150.100.201:9001 sourcedp) 3> info all
Program     Status      Group       Type             Lag at Chkpt  Time Since Chkpt

ADMINSRVR   RUNNING
DISTSRVR    RUNNING
PMSRVR      RUNNING
RECVSRVR    RUNNING

Target Veritabanımız için de aynı adımları yapıyoruz sadece orada deployment name targetdb olacak ve elbette veritabanı seçimimiz 19c olacak.

[oracle@targetgg ~]$ adminclient

OGG (not connected) 1> connect http://150.150.100.191:9001 deployment targetdp as oggadmin Password Welcome1

OGG (http://150.150.100.191:9001 targetdp) 3> info all
Program     Status      Group       Type             Lag at Chkpt  Time Since Chkpt

ADMINSRVR   RUNNING
DISTSRVR    RUNNING
PMSRVR      RUNNING
RECVSRVR    RUNNING

Hedef Ve Kaynak veritabanlarımız da bütün servislerimiz sağlıklı çalışıyor.

Diğer Veritabanımız olan

Evet Bütün Servislerimiz çalışıyor. İşlem Yapmak istediğimiz Kaynak ve Hedef Veritabanlarımıza yukarıdaki adımlar ile OGG kurulumunu yaptıktan sonra, OGG ile artık veri ve veritabanı üzerinde işlemlere başlayacağız.

Veritabanı Replicasyon işlemleri için Veritabanlarımızda aşağıdaki işlemleri yapmalıyız.

Öncelikle enable_goldengate_replication parametresini true yapmalaıyız.

SQL> show parameter enable_golden

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------
enable_goldengate_replication        boolean     FALSE

SQL> alter system set enable_goldengate_replication=true scope=both;


System altered.

streams_pool_size parametresini kontrol edelim 0 ise en az 300M olacak şekilde ayarlayalım

SQL> show parameter streams_pool

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
streams_pool_size                    big integer 0

SQL> alter system set streams_pool_size=300m scope=both;


System altered.

Database Seviyedinde replicasyon için;

Supplemental logging ve force logging parametrelerine bakalım,

SQL> select supplemental_log_data_min, force_logging from v$database;
SUPPLEME FORCE_LOGGING
-------- ---------------------------------------
NO       NO

sql> alter database add supplemental log data;
sql> alter database force logging;
sql>alter system set enable_goldengate_replication=true;

BEGIN
DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
(grantee=>'GGADMIN',
privilege_type=>'capture',
grant_optional_privileges=>'DV_GOLDENGATE_ADMIN');
END;
/

Schema Seviyesinde Replicasyon işlemleri için

OGG (http://150.150.100.111:9001 stbdbdp) 4>ADD SCHEMATRANDATA schema [ALLCOLS|NOSCHEDULINGCOLS]

Table Seviyesinde Replicasyonlar için

OGG (http://150.150.100.111:9001 stbdbdp) 4>ADD TRANDATA SCHEMA.TABLE[ALLCOLS|NOSCHEDULINGCOLS]

Golden Gate için ayarladığımız database user’a bir çok yetki isteniyor ben bu yetkiler yerine direk DBA yetkisi ve dbms_goldengate_auth.grant_admin_privilege paketini çalıştırıp bu işten kurtuluyorum :))

sql> grant dba to ggadmin;
SQL> exec dbms_goldengate_auth.grant_admin_privilege('GGADMIN');

Şimdi veritabanlarını bir tablo için Extract ve Replicats servislerini çalıştırarak senkronizasyonu görelim.

EXTRACT CONFIGURATION

Kaynak Veritabanında ( öncelikli olarak TESTGG adında bir schema oluşturarak içerisinde TESTEXT adında bir tablo uluşturalım sonra, Table seviyesinde replicasyon için bu tabloyu extract ayarlarını yapacağız.

SQL> create user TESTGG identified by Welcome1;

User created.

SQL> grant create session,resource to TESTGG;

Grant succeeded.

SQL> alter user TESTGG quota unlimited on USERS;

User altered.

SQL> connect TESTGG
Enter password:
Connected.
SQL> create table TESTEXT (id number, adi varchar2(64));

Table created.

SQL> insert into TESTEXT values (1,'FARUK');

1 row created.

SQL> commit;

Commit complete.

Şimdi sourcegg veritabanı tarafında http://150.150.100.201:9002/ URL’ine bağlanarak Extract ayarlarında geçebiliriz. Bağlandığımızda Configuration sekmesinden aşağıdaki gibi bilgilerimizi girelim ve veritabanı bağlantımızı yapalım.

Submit diyerek kaydedelim, ardından Action kısmından Veritabanı bağlatı butonu ile bağlantımızı tamamlayalım

Bağlantı sağlandı ise Action altındaki Veritabanı simgesi mavi yanacak ve aşağıda Schema Tablo ve Procedure Şeklinde Transaction Information seçenekleri çıkacak, Biz burada tablo senkronizasyonu yapacağımız için Table seçeneği seçerek devam edeceğiz. Bilgilerimizi girerek Submit ediyoruz, eğer başka bir tablo daha gireceksek, Transaction Information + simgesinden yeni tablo ismimizi de girip submit etmemiz gerekiyor.

Şimdi Overview Menüsüne giderek Extract ı tanımlayalım

+ butonuna basarak extract ı oluşturacağız. Clasic Extract seçiyoruz. Girilen Bilgiler ise

  • Process name: srcext
  • Credentialstore domain: OracleGoldenGate
  • Credential Alias: ggadmin_source
  • Begin: Now
  • Trail Name: tr

Next diyerek ilerliyoruz

Parameter File sonuna Table TESTGG.TESTEXT; ifadesini ekleyelim ve Create and Run diyerek başlatalım.

Fakat 11g Veritabanı için ne kadar bu iş oluyor dense de okadarda kolay olmuyor :))

Hemen Hatamızı aldık

OGG-08100
Severity:
INFO
Title:
EXTRACT (Integrated) added.
Code:
OGG-08221
Severity:
ERROR
Title:
Cannot register or unregister EXTRACT SRCEXT because of the following SQL error: OCI Error ORA (status = 1031-ORA-01031: insufficient privileges ORA-06512: at "SYS.DBMS_XSTREAM_GG_INTERNAL", line 94 ORA-06512: at "SYS.DBMS_XSTREAM_GG", line 93 ORA-06512: at "SYS.DBMS_XSTREAM_GG", line 124 ORA-06512: at line 1 ).
Code:
OGG-08100
Severity:
INFO
Title:
Deleted EXTRACT SRCEX

Bu hatayıl adlıysanız ki almış olamamanız mucize olur. Çözümü Oracle Support (Doc ID 2348973.1) Patch (p20448066) bu patchi geçince bu sorun çözüldü. Sonrasonda extract başladıama şu hatayı verdi bir süre sonra “Oracle GoldenGate Capture for Oracle, SRCEXT.prm: Patch 17030189 is required on your Oracle mining database for trail format RELEASE 12.2 or later“. Bunuda çözümü $OGG_HOME/lib/sql/legacy/ altındaki prvtlmpg.plb scriptini sys ile çalıştırmak oldu ve sonunda extract çalışıyor :))

Şimdi TESTGG.TESTEXT tablomuza bir veri ekleyip commit ettiğimizde trail dosyası oluşuyormu kontrol edelim. Bir veri ekleyip commit ettiğimizda /u01/app/ogg/stbdbdp/var/lib/data dizini altında tr ile başlayan bir dosya oluşmalı.

SQL> select * from TESTgg.TESTEXT;

        ID ADI
---------- ----------------------------------------------------------------
         1 FARUK

SQL>
SQL>
SQL>
SQL> insert into testgg.testext values (2,'Mahmut');

1 row created.

SQL> commit;

Commit complete.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
[oracle@sourcegg legacy]$ ls /u01/app/ogg/sourcedp/var/lib/data/
tr000000000


DISTRUBITION SERVER CREATE PATH

Create and Run dedik

Path de oluştu şimdi replicate kısmını oluşturalım.

REPLICATE CONFIGURATION

Şimdi Hedef Veitabanına bağlanıyoruz (targetgg).

REPLICATE + ile devam edelim –> ardından Integrated Replicate Sonrasında

  • Process Name : targetr
  • Credential Domain : OracleGoldenGate
  • Credential Alias : ggadmin_racdb
  • Trail Name: pa

Next –> Create And Run ile bitiriyoruz

Create And Run diyerek devam edelim.

Çalışıyor. source veritabanındaki TESTGG.TESTEXT tablosuna bir kayıt ekleyip commit edelim. Bakalım targetta aynı anda görebilcekmiyiz.

SOURCE DB de

SQL> insert into TESTGG.TESTEXT values (10,'TESTREPLICA');

1 row created.

SQL> commit;

Commit complete.

TARGET Db de

SQL> select * from TESTGG.TESTEXT where id=10;

        ID ADI
---------- ----------------------------------------------------------------
        10 TESTREPLICA

Evet GoldenGate Başarılı bir şekilde çalışıyor.