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/
[[email protected] Software]$ pwd
/home/oracle/Software
[[email protected] Software]$ ls
V983659-01.zip
[[email protected] Software]$ unzip V983659-01.zip
[[email protected] Software]$ cd fbo_ggs_Linux_x64_services_shiphome/Disk1/
[[email protected] Disk1]$ ./runInstaller




Kurulum başarı ile bittikten sonra $OGG_HOME/bin dizinine gidiyoruz
[[email protected] Disk1]$ cd $OGG_HOME/bin
[[email protected] 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





[[email protected] ~]# /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.
[[email protected]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.
[[email protected]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
[[email protected] 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.