{"id":1001,"date":"2026-06-04T18:01:38","date_gmt":"2026-06-04T15:01:38","guid":{"rendered":"https:\/\/oraclius.com.tr\/?p=1001"},"modified":"2026-06-16T09:10:49","modified_gmt":"2026-06-16T06:10:49","slug":"oracle-goldengate-23ai-ile-oracle-dbden-elasticsearche-centralized-hub-cdc-mimarisi","status":"publish","type":"post","link":"https:\/\/oraclius.com.tr\/en\/oracle-goldengate-23ai-ile-oracle-dbden-elasticsearche-centralized-hub-cdc-mimarisi\/","title":{"rendered":"Oracle GoldenGate 23ai ile Oracle DB\u2019den Elasticsearch\u2019e Centralized Hub CDC Mimarisi"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">G\u00fcn\u00fcm\u00fcz veri mimarilerinde ili\u015fkisel veritabanlar\u0131n\u0131n (RDBMS) tutarl\u0131l\u0131\u011f\u0131 ile arama motorlar\u0131n\u0131n\/NoSQL platformlar\u0131n\u0131n h\u0131z\u0131n\u0131 bir araya getirmek kritik bir gereksinimdir. Transacting verileri bar\u0131nd\u0131ran kaynak veritaban\u0131ndaki de\u011fi\u015fiklikleri anl\u0131k olarak yakalay\u0131p (CDC) Elasticsearch cluster\u2019\u0131na aktarmak, arama performans\u0131n\u0131 ve analitik s\u00fcre\u00e7leri zirveye ta\u015f\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu blog serimizde, <strong>Oracle GoldenGate (OGG) 23ai Microservices Architecture<\/strong> kullanarak, kaynak veritaban\u0131ndan <strong>Elasticsearch 8.x ve gelece\u011fe haz\u0131r 9.x<\/strong> cluster yap\u0131s\u0131na uzanan <strong>Centralized Hub CDC<\/strong> mimarisini ad\u0131m ad\u0131m in\u015fa edece\u011fiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Mimari Tasar\u0131m ve \u00d6n Gereksinimler<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Serimizin ilk b\u00f6l\u00fcm\u00fcnde projemizin kavramsal mimarisini tasarlam\u0131\u015f ve gereksinimleri netle\u015ftirmi\u015ftik. Bu b\u00f6l\u00fcmde ise teoriyi prati\u011fe d\u00f6k\u00fcyoruz. Kurulum ad\u0131mlar\u0131n\u0131 ve konfig\u00fcrasyonlar\u0131 tamamen ger\u00e7ek bir topoloji \u00fczerinden, \u015fu sunucu ve IP bilgileriyle sim\u00fcle ederek ilerletece\u011fiz:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hedef Elasticsearch Sunucusu:<\/strong> <code>elastic.oraclius<\/code> \u2014 <code>10.10.10.13<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kaynak Veritaban\u0131 Sunucusu:<\/strong> <code>oracle.oraclius<\/code> \u2014 <code>10.10.10.11<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Merkezi Hub Sunucusu (OGG):<\/strong> <code>hub.oraclius<\/code> \u2014 <code>10.10.10.12<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.1. Neden Centralized Hub Mimarisi?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kaynak veritaban\u0131 \u00fczerinde operasyonel y\u00fck olu\u015fturmamak ve replikasyon s\u00fcre\u00e7lerini tek bir noktadan y\u00f6netebilmek i\u00e7in en modern yakla\u015f\u0131m <strong>Centralized Hub Architecture (Merkezi Hub Mimarisi)<\/strong> kullanmakt\u0131r. Bu mimarinin sa\u011flad\u0131\u011f\u0131 temel avantajlar \u015funlard\u0131r:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u0131f\u0131r Kaynak T\u00fcketimi (Zero Overhead):<\/strong> Kaynak veritaban\u0131 sunucusuna herhangi bir OGG yaz\u0131l\u0131m\u0131 kurulmaz. CPU, RAM ve I\/O t\u00fcketimi kaynak sunucuda de\u011fil, izole edilmi\u015f Hub sunucusunda ger\u00e7ekle\u015fir.<\/li>\n\n\n\n<li><strong>Merkezi Y\u00f6netim (Single Point of Management):<\/strong> OGG 23ai Microservices\u2019\u0131n modern web aray\u00fcz\u00fc sayesinde t\u00fcm Extract ve Replicat s\u00fcre\u00e7leri tek bir panelden izlenir.<\/li>\n\n\n\n<li><strong>Kolay Bak\u0131m ve Yama Y\u00f6netimi (Patching):<\/strong> \u0130\u015fletim sistemi g\u00fcncellemeleri veya OGG yama (Bundle Patch) y\u00f6netimleri tek bir sunucu \u00fczerinde yap\u0131larak kesinti s\u00fcreleri minimize edilir.<\/li>\n\n\n\n<li><strong>Veri Trafi\u011fi Optimizasyonu:<\/strong> Hub sunucusunda hem <em>OGG for Oracle<\/em> hem de <em>OGG for Big Data<\/em> yan yana (co-located) \u00e7al\u0131\u015faca\u011f\u0131 i\u00e7in, Extract s\u00fcrecinin \u00fcretti\u011fi <strong>Trail File<\/strong> dosyalar\u0131 a\u011f \u00fczerinden ta\u015f\u0131nmaz; Replicat s\u00fcreci bu dosyalar\u0131 yerel diskten do\u011frudan okur.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1.2. Mimari Tasar\u0131m ve Versiyon Uyumlulu\u011fu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kuraca\u011f\u0131m\u0131z yap\u0131n\u0131n hem mevcut sistemleri desteklemesi hem de gelece\u011fe y\u00f6nelik (ES 9.x) bir k\u00f6pr\u00fc olu\u015fturmas\u0131 i\u00e7in a\u015fa\u011f\u0131daki katmanl\u0131 mimariyi esas al\u0131yoruz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kaynak Veritaban\u0131 Katman\u0131:<\/strong> Transactional y\u00fck\u00fc ta\u015f\u0131yan ve CDC (Change Data Capture) yap\u0131lacak olan ana veritaban\u0131.<\/li>\n\n\n\n<li><strong>Replikasyon (Hub) Katman\u0131:<\/strong> \u00dczerinde <em>Oracle GoldenGate for Oracle<\/em> ve <em>Oracle GoldenGate for Big Data<\/em> servislerini bar\u0131nd\u0131ran merkezi sunucu.<\/li>\n\n\n\n<li><strong>Hedef Katman\u0131:<\/strong> Verilerin anl\u0131k indekslenece\u011fi, y\u00fcksek eri\u015filebilir (Multi-Node) Elasticsearch Cluster yap\u0131s\u0131.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u26a0\ufe0f Elasticsearch 8.x ve 9.x Ge\u00e7i\u015findeki Kritik De\u011fi\u015fim<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Elasticsearch 8.x ile birlikte gelen <strong>&#8220;Security by Default&#8221;<\/strong> (varsay\u0131lan SSL ve temel kimlik do\u011frulama) mimarisi, OGG Big Data konfig\u00fcrasyonlar\u0131nda k\u00f6kl\u00fc de\u011fi\u015fiklikler getirdi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Elasticsearch 9.x s\u00fcr\u00fcm\u00fcnde ise eski tip Java REST Client ba\u011f\u0131ml\u0131l\u0131klar\u0131 tamamen kald\u0131r\u0131larak yerine yeni <strong>Elasticsearch Java API Client<\/strong> entegre edildi. Bu yaz\u0131 serisinde in\u015fa edece\u011fimiz Replicat handler yap\u0131s\u0131, her iki s\u00fcr\u00fcm\u00fcn de (8 ve 9) g\u00fcvenlik protokollerini ve <code>Bulk API<\/code> veri formatlar\u0131n\u0131 destekleyecek parametrelerle esnek \u015fekilde optimize edilecektir.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.3. Altyap\u0131 ve \u00d6n Gereksinimlerin Haz\u0131rlanmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kuruluma ge\u00e7meden \u00f6nce Hub sunucusunun ve kaynak veritaban\u0131n\u0131n a\u015fa\u011f\u0131daki gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmal\u0131y\u0131z:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A. Centralized Hub Sunucusu Donan\u0131m ve \u0130\u015fletim Sistemi \u00d6zellikleri<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OS:<\/strong> Oracle Linux veya RHEL g\u00fcncel s\u00fcr\u00fcmleri (64-bit).<\/li>\n\n\n\n<li><strong>CPU\/RAM:<\/strong> E\u015fzamanl\u0131 CDC y\u00fck\u00fcn\u00fc ve Java tabanl\u0131 Big Data handler s\u00fcre\u00e7lerini rahat kar\u015f\u0131layabilmesi i\u00e7in izole, \u00f6l\u00e7eklenebilir donan\u0131m kayna\u011f\u0131.<\/li>\n\n\n\n<li><strong>Storage:<\/strong> Trail file dosyalar\u0131n\u0131n birikme ihtimaline kar\u015f\u0131 (\u00f6rne\u011fin hedef cluster\u2019da olu\u015fabilecek bir kesinti an\u0131nda verilerin kaybolmamas\u0131 i\u00e7in) y\u00fcksek h\u0131zl\u0131 (SSD\/NVMe) ve geni\u015fleyebilir bir mount point (\u00d6rn: <code>\/u01<\/code> veya <code>\/u02<\/code>).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">B. Network ve Port Eri\u015filebilirlikleri (Firewall Kurallar\u0131)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Hub sunucusu ile kaynak ve hedef lokasyonlar aras\u0131nda a\u015fa\u011f\u0131daki portlar\u0131n a\u00e7\u0131k olmas\u0131 \u015fartt\u0131r:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hub \u2500\u2500\u25ba Kaynak DB:<\/strong> SQL*Net portu (Varsay\u0131lan <code>1521<\/code>). OGG Extract s\u00fcre\u00e7leri veritaban\u0131na bu port \u00fczerinden ba\u011flan\u0131r.<\/li>\n\n\n\n<li><strong>Hub \u2500\u2500\u25ba ES Cluster:<\/strong> REST API portu (Varsay\u0131lan <code>9200<\/code>). OGG Big Data Replicat\u2019lar\u0131 veriyi bu port \u00fczerinden bulk olarak push eder.<\/li>\n\n\n\n<li><strong>\u0130stemci (DBA) \u2500\u2500\u25ba Hub:<\/strong> OGG Microservices Service Manager ve Admin Server HTTP\/HTTPS portlar\u0131.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">C. Oracle Client Ba\u011f\u0131ml\u0131l\u0131\u011f\u0131<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Hub sunucusunun uzaktaki veritaban\u0131na ba\u011flanabilmesi ve log madencili\u011fi yapabilmesi i\u00e7in Hub sunucusu \u00fczerine <strong>Oracle Database Client (Administrator y\u00fckleme tipi)<\/strong> kurulmal\u0131 ve <code>TNSNAMES.ORA<\/code> konfig\u00fcrasyonlar\u0131 kaynak veritaban\u0131n\u0131 g\u00f6recek \u015fekilde tamamlanmal\u0131d\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2: Centralized Hub Sunucusunun Haz\u0131rlanmas\u0131 ve OGG 23ai Kurulumu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Serimizin ilk b\u00f6l\u00fcm\u00fcnde projemizin kavramsal mimarisini tasarlam\u0131\u015f, IP ve Hostname topolojimizi belirlemi\u015ftik. Bu b\u00f6l\u00fcmde ise teoriyi prati\u011fe d\u00f6k\u00fcyoruz. Hat\u0131rlayaca\u011f\u0131n\u0131z \u00fczere topolojimiz \u015fu \u015fekildeydi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kaynak Veritaban\u0131 Sunucusu:<\/strong> <code>oracle.oraclius<\/code> \u2014 <code>10.10.10.11<\/code><\/li>\n\n\n\n<li><strong>Merkezi Hub Sunucusu (OGG):<\/strong> <code>hub.oraclius<\/code> \u2014 <code>10.10.10.12<\/code><\/li>\n\n\n\n<li><strong>Hedef Elasticsearch Sunucusu:<\/strong> <code>elastic.oraclius<\/code> \u2014 <code>10.10.10.13<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kuruluma ba\u015flamadan \u00f6nce <code>hub.oraclius<\/code> sunucumuz i\u00e7in a\u015fa\u011f\u0131daki 2 paketi indirmemiz gerekiyor. Paketlerin <strong>Microservices Architecture<\/strong> s\u00fcr\u00fcm\u00fc oldu\u011fundan emin olun:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Oracle GoldenGate 23.26.1.0.0 on Linux x86-64 for Oracle<\/li>\n\n\n\n<li>GoldenGate for Distributed Applications and Analytics v23.26.1.0.0 on Linux x86-64<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-ee856660 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\">GoldenGate Download<\/a><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1. S\u0131f\u0131rdan OS Kullan\u0131c\u0131s\u0131, Gruplar ve Dizin Yap\u0131s\u0131n\u0131n Olu\u015fturulmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tamamen temiz bir sunucuyla ba\u015flad\u0131\u011f\u0131m\u0131z i\u00e7in, ilk olarak GoldenGate ve Oracle Client s\u00fcre\u00e7lerini y\u00fcr\u00fctecek olan <code>oracle<\/code> kullan\u0131c\u0131s\u0131n\u0131 ve gerekli i\u015fletim sistemi gruplar\u0131n\u0131 olu\u015fturmam\u0131z gerekiyor. Bu ad\u0131mlar\u0131 <code>root<\/code> kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. Gerekli OS gruplar\u0131n\u0131 olu\u015ftural\u0131m\ngroupadd -g 54321 oinstall\ngroupadd -g 54322 dba\n\n# 2. oracle kullan\u0131c\u0131s\u0131n\u0131 olu\u015ftural\u0131m ve gruplara dahil edelim\nuseradd -u 54321 -g oinstall -G dba oracle\n\n# 3. oracle kullan\u0131c\u0131s\u0131 i\u00e7in \u015fifre belirleyelim\npasswd oracle<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Dizin A\u011fac\u0131n\u0131n \u0130n\u015fas\u0131 ve Yetkilendirme<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Microservices mimarisinde GoldenGate ikili dosyalar\u0131 (Binaries) ile dinamik olarak de\u011fi\u015fen servis verilerini (Deployment Directory) birbirinden tamamen ay\u0131r\u0131yoruz. <code>\/u01<\/code> ve <code>\/u02<\/code> mount point&#8217;lerinizde \u015fu dizinleri olu\u015fturun ve sahipli\u011fini <code>oracle<\/code> kullan\u0131c\u0131s\u0131na verin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Kurulum (Yaz\u0131l\u0131m) Dizinleri\nmkdir -p \/u01\/app\/oracle\/product\/ogg23ai_core     # OGG for Oracle Home\nmkdir -p \/u01\/app\/oracle\/product\/ogg23ai_bd       # OGG for Big Data Home\nmkdir -p \/u01\/app\/oracle\/product\/client           # Oracle Client Home\n\n# Canl\u0131 \u00c7al\u0131\u015fma (Deployment) Dizinleri\nmkdir -p \/u02\/gg_deployments\/ServiceManager       # Merkezi Servis Y\u00f6neticisi\nmkdir -p \/u02\/gg_deployments\/CoreDeploy           # Extract S\u00fcre\u00e7leri Deposu\nmkdir -p \/u02\/gg_deployments\/BigDataDeploy        # Replicat S\u00fcre\u00e7leri Deposu\n\n# T\u00fcm dizinlerin sahipli\u011fini oracle kullan\u0131c\u0131s\u0131na devredelim\nchown -R oracle:oinstall \/u01 \/u02\nchmod -R 775 \/u01 \/u02<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Linux \u0130\u015fletim Sistemi Optimizasyonlar\u0131 (Hub Node)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Merkezi Hub mimarisinde, y\u00fcksek girdi\/\u00e7\u0131kt\u0131 (I\/O) ve bellek (Memory) i\u015flemlerinin darbo\u011faz olu\u015fturmamas\u0131 i\u00e7in <code>root<\/code> yetkisiyle baz\u0131 kritik OS parametrelerini d\u00fczenlemeliyiz.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A. \u00c7ekirdek Parametreleri (<code>\/etc\/sysctl.conf<\/code>)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A\u011f tampon belleklerinin (network buffer) yetersiz kalmamas\u0131 i\u00e7in a\u015fa\u011f\u0131daki de\u011ferleri <code>\/etc\/sysctl.conf<\/code> dosyas\u0131n\u0131n sonuna ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># OGG Hub Network ve Bellek Optimizasyonlar\u0131\nfs.file-max = 6815744\nnet.core.rmem_max = 4194304\nnet.core.wmem_max = 1048576\nnet.core.rmem_default = 262144\nnet.core.wmem_default = 262144<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">De\u011fi\u015fikliklerin sunucuyu yeniden ba\u015flatmadan devreye girmesi i\u00e7in \u015fu komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sysctl -p<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">B. Kullan\u0131c\u0131 Limitleri (<code>\/etc\/security\/limits.conf<\/code>)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Yeni olu\u015fturdu\u011fumuz <code>oracle<\/code> kullan\u0131c\u0131s\u0131n\u0131n a\u00e7\u0131k dosya say\u0131s\u0131 ve kilitlenebilir bellek limitlerini art\u0131rmak i\u00e7in <code>\/etc\/security\/limits.conf<\/code> dosyas\u0131na \u015fu sat\u0131rlar\u0131 ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># OGG Oracle kullan\u0131c\u0131s\u0131 kaynak limitleri\noracle   soft   nofile    65536\noracle   hard   nofile    65536\noracle   soft   nproc     16384\noracle   hard   nproc     16384\noracle   soft   memlock   500000000\noracle   hard   memlock   500000000<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Ortam De\u011fi\u015fkenlerinin Tan\u0131mlanmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bu ad\u0131mdan itibaren <code>root<\/code> kullan\u0131c\u0131s\u0131ndan \u00e7\u0131k\u0131p, az \u00f6nce olu\u015fturdu\u011fumuz <code>oracle<\/code> kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131yoruz (<code>su - oracle<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>oracle<\/code> kullan\u0131c\u0131s\u0131n\u0131n oturum a\u00e7t\u0131\u011f\u0131nda GoldenGate k\u00fct\u00fcphanelerini sorunsuz g\u00f6rebilmesi i\u00e7in <code>~\/.bash_profile<\/code> dosyas\u0131n\u0131n sonuna a\u015fa\u011f\u0131daki \u00e7evre de\u011fi\u015fkenlerini ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ORACLE_BASE=\/u01\/app\/oracle\nexport ORACLE_HOME=$ORACLE_BASE\/product\/client\nexport OGG_CORE_HOME=$ORACLE_BASE\/product\/ogg23ai_core\nexport OGG_BD_HOME=$ORACLE_BASE\/product\/ogg23ai_bd\nexport LD_LIBRARY_PATH=$ORACLE_HOME\/lib:$OGG_CORE_HOME\/lib:$LD_LIBRARY_PATH\nexport PATH=$ORACLE_HOME\/bin:$OGG_CORE_HOME\/bin:$PATH\nexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosyay\u0131 kaydedip yapt\u0131ktan sonra profili g\u00fcncelleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/.bash_profile<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. OGG 23ai Microservices Kurulum A\u015famalar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130ndirdi\u011fimiz <code>.zip<\/code> paketlerini <code>hub.oraclius<\/code> sunucumuza transfer ettikten sonra, <code>oracle<\/code> kullan\u0131c\u0131s\u0131 ile dosyalar\u0131 a\u00e7\u0131p grafik ekran sihirbazlar\u0131n\u0131 (Oracle Universal Installer) tetikliyoruz. Bu a\u015famada bilgisayar\u0131n\u0131zda X-Server (MobaXterm, Xming vb.) a\u00e7\u0131k ve <code>DISPLAY<\/code> y\u00f6nlendirmeniz etkin olmal\u0131d\u0131r.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A\u015fama A: Oracle Database Client Kurulumu<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ncelikle Hub sunucusunun Oracle DB ile konu\u015fabilmesi i\u00e7in client kurmal\u0131y\u0131z. Kurulum klas\u00f6r\u00fcne gidip <code>.\/runInstaller<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-ee856660 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.oracle.com\/database\/technologies\/oracle26ai-linux-downloads.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LINUX.X64_2326100_client.zip<\/a><\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>unzip LINUX.X64_2326100_client.zip -d \/u01\/client\/\ncd \/u01\/client\/\n.\/runInstaller<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Grafik Ekran Ad\u0131mlar\u0131:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Select Installation Type (Kurulum Tipi):<\/strong> Kar\u015f\u0131n\u0131za gelen se\u00e7eneklerden <strong>&#8220;Administrator&#8221;<\/strong> olan\u0131 se\u00e7in. Uzaktan CDC operasyonlar\u0131 ve geli\u015fmi\u015f network k\u00fct\u00fcphaneleri i\u00e7in bu tip zorunludur. Next ile ilerleyin.<\/li>\n\n\n\n<li><strong>Specify Installation Directories:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Oracle Base:<\/strong> <code>\/u01\/app\/oracle<\/code><\/li>\n\n\n\n<li><strong>Software Location (Oracle Home):<\/strong> <code>\/u01\/app\/oracle\/product\/client<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Prerequisites (\u00d6n Gereksinimler):<\/strong> Kontroller bitti\u011finde, \u00f6zet ekran\u0131nda <strong>Install<\/strong> butonuna basarak kurulumu tamamlay\u0131n. Kurulum bitiminde root kullan\u0131c\u0131s\u0131yla \u00e7al\u0131\u015ft\u0131rman\u0131z istenen bir script \u00e7\u0131karsa, yeni bir terminalde root olarak \u00e7al\u0131\u015ft\u0131r\u0131p onaylay\u0131n.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A\u015fama B: Oracle GoldenGate 23ai for Oracle Kurulumu<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">S\u0131ra ana motorumuz olan Core pakete geldi. \u0130ndirdi\u011fimiz <strong><code>V1054774-01.zip<\/code><\/strong> isimli paketi a\u00e7\u0131yoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Paketi ge\u00e7ici bir dizine a\u00e7al\u0131m\nunzip V1054774-01.zip -d \/u01\/ogg_core_extract\/\ncd \/u01\/ogg_core_extract\/fbo_ggs_Linux_x64_Oracle_services_shiphome\/Disk1\/\n\n# GUI Kurulum sihirbaz\u0131n\u0131 tetikleyelim\n.\/runInstaller<\/code><\/pre>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Installation Option: \n<ul class=\"wp-block-list\">\n<li>Oracle GoldenGate for Oracle Database 26ai and lower supported verions(1.21 GB)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Installation Details:\n<ul class=\"wp-block-list\">\n<li>Software Location: \/u01\/app\/oracle\/product\/ogg23ai_core<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A\u015fama C: GoldenGate for Distributed Applications and Analytics Kurulumu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi s\u0131ra geldi Elasticsearch 8.x\/9.x cluster&#8217;\u0131m\u0131za verileri JSON format\u0131nda bulk olarak push edecek Java tabanl\u0131 motoru (eski ad\u0131yla OGG for Big Data) kurmaya. \u0130ndirdi\u011finiz <strong><code>V1054817-01.zip<\/code><\/strong> (veya listenizdeki ilgili s\u00fcr\u00fcm kodu) paketini a\u00e7\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Big Data \/ Analytics paketini a\u00e7al\u0131m\nunzip V1054834-01.zip -d \/u01\/ogg_bd_replicat\/\ncd \/u01\/ogg_bd_replicat\/ggs_Linux_x64_BigData_services_shiphome\/Disk1\/\n\n# GUI Kurulum sihirbaz\u0131n\u0131 tetikleyelim\n.\/runInstaller<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Grafik Ekran Ad\u0131mlar\u0131:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Software Location:<\/strong> Bu motorun dosyalar\u0131n\u0131 izole etmek i\u00e7in rehberimizin ba\u015f\u0131nda olu\u015fturdu\u011fumuz <code>\/u01\/app\/oracle\/product\/ogg23ai_bd<\/code> dizinini yaz\u0131l\u0131m evi (Home) olarak g\u00f6sterin.<\/li>\n\n\n\n<li><strong>Installation Specifications:<\/strong> Big Data entegrasyonu i\u00e7in gerekli olan Java ba\u011f\u0131ml\u0131l\u0131k k\u00fct\u00fcphanelerinin y\u00fcklenece\u011fi bu ekranda varsay\u0131lan ayarlar\u0131 onaylayarak ilerleyin.<\/li>\n\n\n\n<li><strong>Finish:<\/strong> Sihirbaz\u0131 onaylay\u0131p kurulumu ba\u015far\u0131l\u0131 \u015fekilde sonland\u0131r\u0131n.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">5. OGG Service Manager Kurulumu (Mimarinin Kalbi)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yaz\u0131l\u0131mlar\u0131n i\u015fletim sistemine kurulmas\u0131 ham dosyalar\u0131n gelmesini sa\u011flad\u0131. \u015eimdi <code>hub.oraclius<\/code> (<code>10.10.10.12<\/code>) \u00fczerinde bu iki motoru ortak bir web aray\u00fcz\u00fcnde birle\u015ftirecek olan <strong>Service Manager<\/strong> servisini aya\u011fa kald\u0131raca\u011f\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>oracle<\/code> kullan\u0131c\u0131s\u0131ndayken ana motorumuzun alt\u0131ndaki konfig\u00fcrasyon sihirbaz\u0131n\u0131 GUI modu ile \u00e7al\u0131\u015ft\u0131r\u0131yoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$OGG_CORE_HOME\/bin\/ooggca.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A\u00e7\u0131lan Grafiksel Sihirbazda Yap\u0131lacak Ayarlar:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Service Manager Deployment\n<ul class=\"wp-block-list\">\n<li>Software Home: \/u01\/app\/oracle\/product\/ogg23ai_core<\/li>\n\n\n\n<li>Deployment Home: \/u02\/gg_deployments\/ServiceManager<\/li>\n\n\n\n<li>Hostname\/IP Address: 10.10.10.11<\/li>\n\n\n\n<li>Port: 9000<\/li>\n\n\n\n<li>Register as a service\/system daemon \u2714<\/li>\n\n\n\n<li>Integrate with XAG \u2716<\/li>\n\n\n\n<li>Remote Metrics (StatsD) \u2716<\/li>\n\n\n\n<li>Enable Security \u2716<\/li>\n\n\n\n<li>TLS 1.2 \u2716<\/li>\n\n\n\n<li>TLS 1.3 \u2716<\/li>\n\n\n\n<li>Enable FIPS \u2716<\/li>\n\n\n\n<li>Enable plugin Service \u2716<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Service Manager Administrator\n<ul class=\"wp-block-list\">\n<li>Username: gg_admin<\/li>\n\n\n\n<li>Password: 123456789<\/li>\n\n\n\n<li>Enable Strong Password Policy \u2716<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>User Deployment\n<ul class=\"wp-block-list\">\n<li>Deployment Name: OGG_Core<\/li>\n\n\n\n<li>Deployment Home: \/u02\/gg_deployments\/CoreDeploy<\/li>\n\n\n\n<li>Administration Service: 9001<\/li>\n\n\n\n<li>Distribution Service: 9002<\/li>\n\n\n\n<li>Receiver Service: 9003<\/li>\n\n\n\n<li>Performance Metric Service: 9004<\/li>\n\n\n\n<li>Data Store Type: BDB<\/li>\n\n\n\n<li>TNS_ADMIN: \/u01\/app\/oracle\/product\/client\/network\/admin<\/li>\n\n\n\n<li>Replication Schema: GGADMIN<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>User Deployment Administrator\n<ul class=\"wp-block-list\">\n<li>Same as Service Manager Administrator credentials \u2714<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. : OGG Big Data User Deployment Kurulumu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu ad\u0131mda, az \u00f6nce Core i\u00e7in yapt\u0131\u011f\u0131m\u0131z i\u015flemlerin benzerini Big Data paketi i\u00e7in yapaca\u011f\u0131z. Buradaki servisler, veriyi Java tabanl\u0131 entegrasyon k\u00fct\u00fcphaneleriyle (Handler\/Formatter) i\u015flemekten sorumlu olacak.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1. Grafik Ekran Sihirbaz\u0131n\u0131 Tetikleme<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">E\u011fer Core kurulumundan sonra sihirbaz\u0131 kapatt\u0131ysan, <code>oracle<\/code> kullan\u0131c\u0131s\u0131 ile Big Data paketinin kurulu oldu\u011fu dizine giderek yap\u0131land\u0131rma sihirbaz\u0131n\u0131 yeniden ba\u015flatman gerekir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/u01\/app\/oracle\/product\/ogg23ai_bd\/bin\n.\/oggca.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sihirbaz\u0131n bu ilk ekran\u0131nda, Big Data i\u00e7in ay\u0131rd\u0131\u011f\u0131m\u0131z \u00f6zel dizinleri ve isim tan\u0131mlamas\u0131n\u0131 yap\u0131yoruz:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Service Manager Deployment:\n<ul class=\"wp-block-list\">\n<li>Existing Service Manager: \u2714<\/li>\n\n\n\n<li>Hostname\/IP Address: 10.10.10.12<\/li>\n\n\n\n<li>Port: 9000<\/li>\n\n\n\n<li>Enable Security: false<\/li>\n\n\n\n<li>Integrate with XAG: false<\/li>\n\n\n\n<li>Add new GoldenGate deployment: \u2714<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Service Manager Administration\n<ul class=\"wp-block-list\">\n<li>Username: gg_admin<\/li>\n\n\n\n<li>Password: 123456789<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>User Deployment\n<ul class=\"wp-block-list\">\n<li>Deployment Name: OGG_BigData<\/li>\n\n\n\n<li>Deployment Home: \/u02\/gg_deployments\/BigDataDeploy<\/li>\n\n\n\n<li>Administration Service: 9011<\/li>\n\n\n\n<li>Distribution Service: 9012<\/li>\n\n\n\n<li>Receiver Service: 9013<\/li>\n\n\n\n<li>Performance Metric Service: 9014<\/li>\n\n\n\n<li>Data Store Type: BDB<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>User Deployment Administrator\n<ul class=\"wp-block-list\">\n<li>Same as Service Manager Administrator credentials \u2714<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6aed1f83606e4&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aed1f836147b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aed1f836147b\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"1006\" src=\"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-1024x387.png\" alt=\"\" class=\"wp-image-1006\" srcset=\"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-1024x387.png 1024w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-300x113.png 300w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-768x290.png 768w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-1536x581.png 1536w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1-18x7.png 18w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/06\/Ekran-Alintisi-1.png 1648w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Kaynak Veritaban\u0131 Haz\u0131rl\u0131\u011f\u0131 ve Extract S\u00fcreci<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate&#8217;in kaynak veritaban\u0131ndan veri yakalayabilmesi i\u00e7in Oracle 19c taraf\u0131nda baz\u0131 kritik parametrelerin a\u00e7\u0131k olmas\u0131 ve GoldenGate&#8217;e \u00f6zel bir kullan\u0131c\u0131n\u0131n tan\u0131mlanmas\u0131 \u015fartt\u0131r.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ad\u0131m 1: Kaynak Veritaban\u0131nda (Oracle 19c) Log Mekanizmas\u0131n\u0131 A\u00e7ma<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate, silinen veya g\u00fcncellenen verilerin eski hallerini g\u00f6rebilmek i\u00e7in veritaban\u0131n\u0131n <code>Supplemental Logging<\/code> \u00f6zelli\u011fine ihtiya\u00e7 duyar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kaynak veritaban\u0131na <code>SYSDBA<\/code> olarak ba\u011flan\u0131p \u015fu komutlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131yoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Veritaban\u0131n\u0131n ar\u015fiv modunda (ARCHIVELOG) olup olmad\u0131\u011f\u0131n\u0131 kontrol et, de\u011filse ar\u015fiv moduna al.\nARCHIVE LOG LIST;\n\n-- GoldenGate replikasyon deste\u011fini veritaban\u0131 seviyesinde aktif et (\u00c7ok Kritik!)\nALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;\n\n-- Minimum supplemental logging mekanizmas\u0131n\u0131 devreye al\nALTER DATABASE ADD SUPPLEMENTAL LOG DATA;\n\n-- De\u011fi\u015fikliklerin devreye girmesi i\u00e7in log switch yap\nALTER SYSTEM SWITCH LOGFILE;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ad\u0131m 2: GoldenGate Y\u00f6netici Kullan\u0131c\u0131s\u0131n\u0131n (GGADMIN) Yarat\u0131lmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate&#8217;in loglar\u0131 okurken ve hedef checkpoint tablolar\u0131n\u0131 y\u00f6netirken kullanaca\u011f\u0131 <code>GGADMIN<\/code> kullan\u0131c\u0131s\u0131n\u0131 kaynak veritaban\u0131nda olu\u015fturup gerekli yetkileri devrediyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Kullan\u0131c\u0131y\u0131 olu\u015ftur (\u015eifreyi kendine g\u00f6re belirle emre babi\u015f)\nCREATE USER ggadmin IDENTIFIED BY \"123456\" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;\n\n-- Klasik DBA ve GoldenGate admin yetkilerini ver\nGRANT CONNECT, RESOURCE, DBA TO ggadmin;\nGRANT SELECT ANY DICTIONARY TO ggadmin;\n\n-- GoldenGate'in log madencili\u011fi (LogMiner) yapabilmesi i\u00e7in \u00f6zel paket yetkileri\nGRANT EXECUTE ON dbms_flashback TO ggadmin;\nBEGIN\n  DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');\nEND;\n\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ad\u0131m 3: TNS S\u0131rr\u0131n\u0131 \u00c7\u00f6zme (<code>tnsnames.ora<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kurulum esnas\u0131nda sihirbaza <code>TNS_ADMIN<\/code> yolu olarak <code>\/u01\/app\/oracle\/product\/client\/network\/admin<\/code> klas\u00f6r\u00fcn\u00fc g\u00f6stermi\u015ftik.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi bu klas\u00f6r\u00fcn alt\u0131na gidip, <code>oracle<\/code> kullan\u0131c\u0131s\u0131yla <code>tnsnames.ora<\/code> dosyas\u0131n\u0131 olu\u015fturmal\u0131 ve uzaktaki Oracle 19c veritaban\u0131n\u0131n ba\u011flant\u0131 bilgilerini buraya i\u015flemeliyiz (10.10.10.12):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/u01\/app\/oracle\/product\/client\/network\/admin\/tnsnames.ora<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130\u00e7ine \u015fu \u015fablonu kendi kaynak DB bilgilerine g\u00f6re doldurarak yap\u0131\u015ft\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORACLIUS =\n  (DESCRIPTION =\n    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))\n    (CONNECT_DATA =\n      (SERVER = DEDICATED)\n      (SERVICE_NAME = oraclius)\n    )\n  )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kaydedip \u00e7\u0131kt\u0131ktan sonra <code>tnsping <\/code>ORACLIUS yaparak ba\u011flant\u0131n\u0131n gitti\u011fini do\u011frula.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/u01\/app\/oracle\/product\/client\/bin\/tnsping ORACLIUS<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ad\u0131m 4: Web Aray\u00fcz\u00fcnden \u0130lk Extract (Veri Yakalama) S\u00fcrecini Yazma<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi kendi bilgisayar\u0131ndan taray\u0131c\u0131y\u0131 a\u00e7\u0131p <strong><code>[https:\/\/10.10.10.12:9001](https:\/\/10.10.10.12:9001)<\/code><\/strong> (OGG_Core Admin Service) portuna git ve <code>oggadmin<\/code> bilgilerinle giri\u015f yap.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Credentials Ekleme:<\/strong> Sol men\u00fcden <em>Configuration<\/em> sekmesine gel. <code>+<\/code> butonuna basarak veritaban\u0131 kimlik bilgilerini ekle:\n<ul class=\"wp-block-list\">\n<li><strong>Domain:<\/strong> <code>Oracle<\/code>GoldenGate<\/li>\n\n\n\n<li><strong>Alias:<\/strong> <code>DATABASE1<\/code><\/li>\n\n\n\n<li><strong>User ID:<\/strong> <code>ggadmin@ORACLIUS<\/code><\/li>\n\n\n\n<li><strong>Password:<\/strong> Az \u00f6nce SQL&#8217;de belirledi\u011fin <code>ggadmin<\/code> \u015fifresi (123456).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TRANDATA Ekleme (Schema\/Table Lock):<\/strong> Ekledi\u011fin bu kimli\u011fin sa\u011f taraf\u0131ndaki &#8220;Action&#8221; men\u00fcs\u00fcnden veritaban\u0131na ba\u011flan. <em>S\u00fcrekli takiple\u015fmesini istedi\u011fin \u015femay\u0131<\/em> (\u00d6rn: <code>HR<\/code> veya <code>SCOTT<\/code>) se\u00e7ip <strong>&#8220;Add Supplemental Log&#8221;<\/strong> diyerek i\u015faretle.<\/li>\n\n\n\n<li><strong>Extract Olu\u015fturma:<\/strong> Ana ekrana d\u00f6n\u00fcp <em>Overview<\/em> k\u0131sm\u0131ndan <strong>Extracts<\/strong> ba\u015fl\u0131\u011f\u0131n\u0131n yan\u0131ndaki <code>+<\/code> butonuna bas:\n<ul class=\"wp-block-list\">\n<li><strong>Extract Type:<\/strong> <code>Integrated Extract<\/code> se\u00e7.<\/li>\n\n\n\n<li><strong>Process Name:<\/strong> <code>EX_SRC<\/code> (Genel standart isimdir).<\/li>\n\n\n\n<li><strong>Intent:<\/strong> <code>All Operations<\/code><\/li>\n\n\n\n<li><strong>Credential Domain \/ Alias:<\/strong> Az \u00f6nce yaratt\u0131\u011f\u0131n <code>OracleDB<\/code> ve <code>SourceDB_Alias<\/code> se\u00e7.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Parametre Dosyas\u0131 (Parameter File):<\/strong> Kar\u015f\u0131na gelen konfig\u00fcrasyon metin kutusuna replike etmek istedi\u011fin \u015femay\u0131 \u015fu \u015fekilde hedef g\u00f6ster:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>--- Auto generated Parameter File, do not edit ---\nEXTRACT E_EMP1\nUSERIDALIAS DATABASE1 DOMAIN OracleGoldenGate\nEXTTRAIL A1\n--- End of auto generated Parameter File ---\n----------------------------------------------------\n-- scn = \n----------------------------------------------------\n-- PERFORMANS\nCACHEMGR CACHESIZE 2G\nREPORTCOUNT EVERY 10000 RECORDS\nWARNLONGTRANS 1h, CHECKINTERVAL 10m\n----------------------------------------------------\nTABLE GGADMIN.EMPLOYEES;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. : Da\u011f\u0131t\u0131m Servisi (Distribution Service) ile K\u00f6pr\u00fc Kurma<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu b\u00f6l\u00fcmde amac\u0131m\u0131z, Core taraf\u0131ndaki trail dosyalar\u0131n\u0131 Big Data taraf\u0131n\u0131n okuyabilece\u011fi yere otomatik pompalamak.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.1: Hedef Big Data Taraf\u0131nda G\u00fcvenlik Kart\u0131 (Credential) Tan\u0131mlama<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Distribution Path (Core taraf\u0131ndaki kurye), veriyi al\u0131p Big Data&#8217;n\u0131n kap\u0131s\u0131na dayand\u0131\u011f\u0131nda i\u00e7eri girebilmek i\u00e7in Big Data&#8217;n\u0131n tan\u0131d\u0131\u011f\u0131 bir kimlik g\u00f6stermek zorundad\u0131r.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Giri\u015f:<\/strong> <code>[https:\/\/10.10.10.12:9011](https:\/\/10.10.10.12:9011)<\/code> (OGG_BigData) paneline giri\u015f yapt\u0131ktan sonra, <code>image_9a5841.png<\/code> g\u00f6rselinde en ba\u015fta a\u00e7\u0131k olarak duran <strong><code>DB Connections<\/code><\/strong> sekmesine t\u0131kla.<\/li>\n\n\n\n<li><strong>Ekleme:<\/strong> Sa\u011f tarafta a\u00e7\u0131lan ekrandan yine <strong><code>+<\/code> (Add Connection)<\/strong> veya credential ekleme butonunu kullanaca\u011f\u0131z.<\/li>\n\n\n\n<li><strong>Form Bilgileri:<\/strong><\/li>\n\n\n\n<li><strong>Target Authentication Method:<\/strong> <code>UserID Alias<\/code> kalacak.<\/li>\n\n\n\n<li><strong>Domain:<\/strong> <code>OracleGG<\/code><\/li>\n\n\n\n<li><strong>Alias:<\/strong> <code>BD_Auth_Alias<\/code><\/li>\n\n\n\n<li><strong>User_Id:<\/strong> <code>oggadmin<\/code> (veya paneline girdi\u011fin yetkili admin kullan\u0131c\u0131s\u0131)<\/li>\n\n\n\n<li><strong>Password:<\/strong> Bu kullan\u0131c\u0131n\u0131n \u015fifresi.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Ad\u0131m 1: Core Panelinden Da\u011f\u0131t\u0131m Yolunu (Path) Tan\u0131mlama<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kendi bilgisayar\u0131n\u0131n taray\u0131c\u0131s\u0131ndan <strong><code>https:\/\/10.10.10.12:9002<\/code><\/strong> (OGG_Core <strong>Distribution Service<\/strong>) portuna git veya <code>9001<\/code> panelindeyken sol \u00fcstteki men\u00fcden Distribution Service&#8217;e ge\u00e7i\u015f yap.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ana ekranda <strong>Paths<\/strong> ba\u015fl\u0131\u011f\u0131n\u0131n sa\u011f\u0131ndaki <strong><code>+<\/code> (Add Path)<\/strong> butonuna bas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00e7\u0131lan formda k\u00f6pr\u00fcn\u00fcn kimlik bilgilerini aynen \u015fu \u015fekilde doldur:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Path Information<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Path Name:<\/strong> <code>P_CORE_TO_BD<\/code><\/li>\n\n\n\n<li><strong>Description:<\/strong> Core&#8217;dan Big Data&#8217;ya Trail pompalama yolu.<\/li>\n\n\n\n<li><strong>Air Gap Security Enabled:<\/strong> <strong>Se\u00e7ili De\u011fil (Unchecked).<\/strong><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2. Source Options<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Source Extract:<\/strong> E_EMP1 <em>(Az \u00f6nce kurdu\u011fun ve insert&#8217;\u00fc yakalayan o canavar Extract&#8217;\u0131 se\u00e7iyorsun).<\/em><\/li>\n\n\n\n<li><strong>Trail Name:<\/strong> A1 <em>(Extract&#8217;\u0131n \u00fcretti\u011fi trail dosyas\u0131n\u0131n iki harfli ad\u0131).<\/em><\/li>\n\n\n\n<li><strong>Subdirectory, Source, Encryption Profile, Begin, Source Log, RBA Offset:<\/strong> Bunlar\u0131n hi\u00e7birine dokunma, <strong>bo\u015f veya varsay\u0131lan<\/strong> neyse \u00f6yle b\u0131rak. GoldenGate otomatik olarak en son kal\u0131nan yerden okumaya ba\u015flayacak.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3. Target Options <em>(En Can Al\u0131c\u0131 Ad\u0131m)<\/em><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Target Protocol:<\/strong> <strong><code>ogg<\/code><\/strong><\/li>\n\n\n\n<li><strong>Reverse proxy enabled:<\/strong> <strong>Se\u00e7ili De\u011fil (Unchecked).<\/strong><\/li>\n\n\n\n<li><strong>Target Type (Manager, collector, Receiver Service):<\/strong> Buradan <strong><code>Receiver Service<\/code><\/strong> se\u00e7ene\u011fini i\u015faretle. <em>(\u00c7\u00fcnk\u00fc veriyi kar\u015f\u0131 tarafta <code>9013<\/code> portunda bekleyen Big Data&#8217;n\u0131n Receiver Service&#8217;ine \u00fcfleyece\u011fiz).<\/em><\/li>\n\n\n\n<li><strong>Target Host:<\/strong> <code>10.10.10.12<\/code><\/li>\n\n\n\n<li><strong>Port Number:<\/strong> <strong><code>9013<\/code><\/strong> <em>(Big Data Receiver Service portun).<\/em><\/li>\n\n\n\n<li><strong>Trail Name:<\/strong> <code>bt<\/code> <em>(Big Data taraf\u0131nda olu\u015facak dosyalar\u0131n \u00f6n eki).<\/em><\/li>\n\n\n\n<li><strong>Target Type (En alttaki):<\/strong> Buras\u0131 yine verinin binary kalmas\u0131 i\u00e7in <strong><code>GGFormat<\/code><\/strong> olacak.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4. Advanced Options<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buradaki hi\u00e7bir a\u011f optimizasyon ayar\u0131na (<code>compression<\/code>, <code>buffer size<\/code>, <code>tcp_nodelay<\/code> vb.) <strong>dokunma<\/strong>, oldu\u011fu gibi varsay\u0131lan b\u0131rak\u0131p &#8220;Next&#8221; de ge\u00e7. \u0130leride performans akort etmek istersek buraya geri d\u00f6neriz.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">5. Filtering Options<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Herhangi bir filtreleme yapmayaca\u011f\u0131z, \u015femadaki her \u015feyi oldu\u011fu gibi kar\u015f\u0131ya paslayaca\u011f\u0131z. Buray\u0131 da <strong>bo\u015f b\u0131rak\u0131p<\/strong> direkt &#8220;Next&#8221; diyerek ge\u00e7 emre babi\u015f.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">6. Managed Options<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Critical:<\/strong> <strong>Se\u00e7ili (Checked)<\/strong> kalabilir. (S\u00fcre\u00e7 \u00e7\u00f6kerse Service Manager genel durumu alert versin diye).<\/li>\n\n\n\n<li><strong>Auto Restart:<\/strong> <strong>Se\u00e7ili (Checked).<\/strong> <em>(Sunucuya reboot gelirse bu kurye otomatikman kendi kendine aya\u011fa kalks\u0131n).<\/em><\/li>\n\n\n\n<li><strong>Autorestart retries \/ delay:<\/strong> Varsay\u0131lan de\u011ferlerde b\u0131rakabilirsin.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">E\u011fer i\u015flem ba\u015far\u0131l\u0131 ise a\u015fa\u011f\u0131daki dizine bt ile ba\u015flayan trail dosyalar\u0131n\u0131n geldi\u011fini g\u00f6receksiniz:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ll \/u02\/gg_deployments\/BigDataDeploy\/var\/lib\/data\ntotal 92\n-rw-r----- 1 oracle oinstall 93371 Jun  5 15:47 bt000000000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6: Big Data Replicat (Uygulama) S\u00fcrecinin Kurulmas\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oracle GoldenGate 23ai ekosisteminde, kaynak veritaban\u0131ndan yakalanan trail verilerinin hedef Big Data platformlar\u0131na (Elasticsearch, Kafka vb.) aktar\u0131lmas\u0131 g\u00f6revini <strong>Big Data Replicat<\/strong> s\u00fcre\u00e7leri \u00fcstlenir. Bu s\u00fcre\u00e7ler, hedef platformun yerel k\u00fct\u00fcphanelerini kullanarak veri transferini ger\u00e7ekle\u015ftirmek ad\u0131na bir Java Sanal Makinesi (JVM) tabanl\u0131 mimari i\u015fletir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu b\u00f6l\u00fcmde; Elasticsearch Java s\u00fcr\u00fcc\u00fc ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n konumland\u0131r\u0131lmas\u0131n\u0131, Java Delivery Handler ayarlar\u0131n\u0131 ve verinin hedefe mikrosaniye seviyesinde, ara belle\u011fe al\u0131nmadan (anl\u0131k) yaz\u0131lmas\u0131n\u0131 sa\u011flayacak parametrik optimizasyonlar\u0131 inceleyece\u011fiz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.1. K\u00fct\u00fcphane Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n (Dependencies) Haz\u0131rlanmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate Big Data Java Framework&#8217;\u00fcn Elasticsearch k\u00fcmesi ile yerel protokoller \u00fczerinden konu\u015fabilmesi i\u00e7in gerekli olan JAR k\u00fct\u00fcphaneleri, ilgili deployment alt\u0131ndaki ba\u011f\u0131ml\u0131l\u0131k dizininde (<code class=\"\">\/u02\/gg_deployments\/BigDataDeploy\/var\/lib\/dependencies\/<\/code>) konumland\u0131r\u0131lmal\u0131d\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kurulum \u015femas\u0131nda kullan\u0131lan g\u00fcncel ve kararl\u0131 k\u00fct\u00fcphane bile\u015fenleri \u015fu \u015fekildedir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/u02\/gg_deployments\/BigDataDeploy\/var\/lib\/dependencies\/\n\u251c\u2500\u2500 elasticsearch-java-8.1.3.jar            # Ana Elasticsearch Java \u0130stemcisi\n\u251c\u2500\u2500 elasticsearch-rest-client-8.1.3.jar      # Alt Seviye REST \u0130stemcisi\n\u251c\u2500\u2500 httpclient-4.5.13.jar                    # HTTP Ba\u011flant\u0131 Y\u00f6netimi\n\u251c\u2500\u2500 httpcore-4.4.15.jar                      # \u00c7ekirdek HTTP Protokol Bile\u015fenleri\n\u251c\u2500\u2500 httpasyncclient-4.1.5.jar                # Asenkron I\/O \u0130leti\u015fimi\n\u251c\u2500\u2500 httpcore-nio-4.4.15.jar                  # Non-blocking I\/O Motoru\n\u251c\u2500\u2500 jackson-databind-2.13.2.2.jar            # JSON Veri E\u015fleme K\u00fct\u00fcphanesi\n\u251c\u2500\u2500 jackson-core-2.13.2.jar                  # \u00c7ekirdek JSON Ayr\u0131\u015ft\u0131r\u0131c\u0131\n\u251c\u2500\u2500 jackson-annotations-2.13.2.jar           # JSON Nesne \u0130\u015faretleyicileri\n\u251c\u2500\u2500 jakarta.json-api-2.0.1.jar               # Standart JSON API Standartlar\u0131\n\u251c\u2500\u2500 parsson-1.0.0.jar                        # JSON \u0130\u015fleme Uygulamas\u0131 (JSON-P)\n\u251c\u2500\u2500 commons-codec-1.11.jar                   # Veri \u015eifreleme\/Kodlama \u00c7\u00f6z\u00fcmleri\n\u2514\u2500\u2500 commons-logging-1.2.jar                  # Loglama Altyap\u0131s\u0131<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.2. Java Delivery \/ Elasticsearch Konfig\u00fcrasyonu (<code>elasticsearch.properties<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java Handler katman\u0131n\u0131n, yukar\u0131da listelenen k\u00fct\u00fcphaneleri (<code>classpath<\/code>) nas\u0131l y\u00fckleyece\u011fini ve hedef k\u00fcme mimarisine hangi kimlik do\u011frulama tipiyle ba\u011flanaca\u011f\u0131n\u0131 belirleyen konfig\u00fcrasyon dosyas\u0131 a\u015fa\u011f\u0131daki gibi set edilmelidir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Elasticsearch Handler Template\n# Note: Recommended to only edit the configuration marked as TODO\ngg.handlerlist=elasticsearch\ngg.handler.elasticsearch.type=elasticsearch\n\n# Elasticsearch Target Cluster Server URI List\ngg.handler.elasticsearch.serverAddressList=10.10.10.13:9200\ngg.handler.elasticsearch.authType=none\n\n# Elasticsearch Java Driver Library Jars and Dependent Jars Classpath\ngg.classpath=\/u02\/gg_deployments\/BigDataDeploy\/var\/lib\/dependencies\/*<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Anl\u0131k (Real-Time Streaming) Ak\u0131\u015f Optimizasyonu ve Parametre Yap\u0131s\u0131 (<code>R_EMP.prm<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate Replicat motoru, varsay\u0131lan fabrikasyon ayarlar\u0131nda y\u00fcksek i\u015flem hacmi (throughput) sa\u011flamak ve hedef sistemdeki a\u011f\/I\/O maliyetini d\u00fc\u015f\u00fcrmek amac\u0131yla kaynak taraftan gelen transaction&#8217;lar\u0131 biner biner gruplayarak (<code>GROUPTRANSOPS 1000<\/code>) toplu (batch) modda basma e\u011filimindedir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ancak veri analiti\u011fi, anl\u0131k loglama, SIEM veya canl\u0131 izleme mimarilerinde gecikme tolerans\u0131 s\u0131f\u0131rd\u0131r. Kaynak taraftan (Extract s\u00fcrecinden) <strong>tek bir sat\u0131r veri gelse dahi<\/strong>, Replicat&#8217;\u0131n bellekte ba\u015fka bir kayd\u0131n gelmesini beklemeden bu veriyi an\u0131nda Elasticsearch indekslerine push etmesi istenir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yapay gecikmeyi tamamen ortadan kald\u0131rmak ve saf anl\u0131k ak\u0131\u015f\u0131 (low-latency real-time streaming) devreye almak i\u00e7in transaction gruplama baraj\u0131n\u0131 <strong><code>1<\/code><\/strong> de\u011ferine \u00e7ekmemiz gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu do\u011frultuda optimize edilmi\u015f nihai Replicat parametre dosyas\u0131 yap\u0131s\u0131:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--- Auto generated Parameter File, do not edit ---\n-- Parameter file for Elasticsearch replicat\nREPLICAT R_EMP\n--- End of auto generated Parameter File ---\n\n-- Real-Time Streaming Optimizasyonu: \n-- 1 sat\u0131r veri gelse dahi tampon belle\u011fe almadan an\u0131nda hedefe yazar.\nGROUPTRANSOPS 1\n\n-- Kaynak ve Hedef \u015eema\/Tablo Haritalama (Mapping)\nMAP GGADMIN.EMPLOYEES, TARGET oraclius.employees;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. adminclient \u00dczerinden S\u00fcrecin Da\u011f\u0131t\u0131lmas\u0131 ve Ba\u015flat\u0131lmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Konfig\u00fcrasyon altyap\u0131s\u0131 haz\u0131rlanan Big Data Replicat s\u00fcreci, GoldenGate 23ai Microservices komut sat\u0131r\u0131 arac\u0131 olan <code>adminclient<\/code> \u00fczerinden hedef deployment&#8217;a tescil edilerek devreye al\u0131n\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- 1. \u0130lgili Big Data Deployment Servisine Ba\u011flan\u0131lmas\u0131\nCONNECT http:\/\/10.10.10.12:9011 DEPLOYMENT BigDataDeploy AS oggadmin\n\n-- 2. Replicat S\u00fcrecinin Ger\u00e7ek Trail Kayna\u011f\u0131 (bt) G\u00f6sterilerek Olu\u015fturulmas\u0131\nADD REPLICAT R_EMP, TRAILSOURCE var\/lib\/data\/bt\n\n-- 3. S\u00fcrecin Aktif Hale Getirilmesi\nSTART REPLICAT R_EMP<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bu ad\u0131mlar\u0131n ard\u0131ndan s\u00fcre\u00e7, kuyruk y\u00f6netimini tamamen devre d\u0131\u015f\u0131 b\u0131rakarak kaynak veritaban\u0131nda \u00fcretilen her bir de\u011fi\u015fikli\u011fi (DML) milisaniyeler seviyesinde Elasticsearch k\u00fcmesine aktarmaya ba\u015flayacakt\u0131r. Aktar\u0131lan canl\u0131 operasyon verilerini ve anl\u0131k istatistikleri izlemek i\u00e7in <code>STATS REPLICAT R_EMP<\/code> komutu kullan\u0131labilir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Elasticsearch Handler ile Dinamik \u0130ndeks Y\u00f6netimi ve Ingest Pipeline \u00c7\u00f6z\u00fcm\u00fc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oracle GoldenGate for Distributed Applications and Analytics (Big Data) mimarisinde, verileri hedef sisteme basarken en \u00e7ok ihtiya\u00e7 duyulan senaryolardan biri verinin i\u00e7eri\u011fine (\u00f6rne\u011fin bir tarih kolonuna) g\u00f6re dinamik indeksler (<code>emre_202606<\/code> gibi) olu\u015fturmakt\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ancak GoldenGate <strong>Elasticsearch Handler<\/strong> k\u00fct\u00fcphanesinin (<code>ElasticSearchHandler<\/code>) do\u011fas\u0131 gere\u011fi, Kafka veya File Writer handler&#8217;lar\u0131nda bulunan <code>indexMappingTemplate<\/code> gibi dinamik token parametreleri bu s\u0131n\u0131fta <strong>desteklenmez<\/strong>. Elasticsearch Handler, hedef indeks ismini do\u011frudan Replicat parametre dosyas\u0131ndaki (<code>.prm<\/code>) <code>TARGET<\/code> tan\u0131m\u0131ndan (<code>schema.table<\/code> -&gt; <code>schema_table<\/code>) otomatik olarak t\u00fcretir ve sabit bir indekse yazar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu k\u0131s\u0131tlamay\u0131 a\u015fman\u0131n ve mimariyi production ortam\u0131nda en performansl\u0131 \u015fekilde \u00e7al\u0131\u015ft\u0131rman\u0131n yolu, dinamik indeksleme y\u00fck\u00fcn\u00fc Elasticsearch&#8217;\u00fcn <strong>Ingest Pipeline<\/strong> yeteneklerine devretmektir.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Ad\u0131m: Elasticsearch Ingest Pipeline Olu\u015fturulmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ncelikle Elasticsearch taraf\u0131nda, GoldenGate&#8217;ten gelen verinin i\u00e7indeki <code>HIRE_DATE<\/code> kolonunu analiz edecek ve dok\u00fcman\u0131 gitmesi gereken dinamik indekse y\u00f6nlendirecek bir <strong>Painless<\/strong> beti\u011fi haz\u0131rl\u0131yoruz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A\u015fa\u011f\u0131daki API \u00e7a\u011fr\u0131s\u0131 ile <code>gg_dynamic_index_pipeline<\/code> isimli pipeline&#8217;\u0131 Elasticsearch \u00fczerinde tan\u0131mlay\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT _ingest\/pipeline\/gg_dynamic_index_pipeline\n{\n  \"description\": \"HIRE_DATE alan\u0131na g\u00f6re verileri dinamik emre_YYYYMM indekslerine y\u00f6nlendirir\",\n  \"processors\": &#91;\n    {\n      \"script\": {\n        \"lang\": \"painless\",\n        \"source\": \"\"\"\n          if (ctx.containsKey('HIRE_DATE') &amp;&amp; ctx.HIRE_DATE != null) {\n            String hd = ctx.HIRE_DATE.toString();\n            \/\/ Tarih format\u0131n\u0131n (YYYY-MM-DD) uzunlu\u011funu kontrol et\n            if (hd.length() >= 7) {\n              String year = hd.substring(0, 4);\n              String month = hd.substring(5, 7);\n              ctx._index = 'emre_' + year + month;\n            }\n          }\n        \"\"\"\n      }\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Ad\u0131m: Elasticsearch Index Template ve Default Pipeline Tan\u0131m\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GoldenGate&#8217;in hedef olarak g\u00f6rece\u011fi sabit indeks (<code>oraclius_employees<\/code>) tetiklendi\u011finde, yukar\u0131da yazd\u0131\u011f\u0131m\u0131z pipeline&#8217;\u0131n otomatik olarak devreye girmesi i\u00e7in bir indeks \u015fablonu (Index Template) olu\u015fturuyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT _index_template\/oraclius_employees_template\n{\n  \"index_patterns\": &#91;\"oraclius_employees\"],\n  \"template\": {\n    \"settings\": {\n      \"index.default_pipeline\": \"gg_dynamic_index_pipeline\"\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Ad\u0131m: GoldenGate Replicat Parametre Dosyas\u0131 (<code>R_EMP.prm<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mimarinin Elasticsearch taraf\u0131n\u0131 kurduktan sonra, GoldenGate taraf\u0131ndaki konfig\u00fcrasyonu karma\u015f\u0131k token ve string operasyonlar\u0131ndan ar\u0131nd\u0131rarak en sade ve kararl\u0131 haline getiriyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPLICAT R_EMP\nGROUPTRANSOPS 1\nMAP GGADMIN.EMPLOYEES, TARGET oraclius.employees;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Ad\u0131m: Java Adapter Konfig\u00fcrasyonu (<code>elasticsearch.properties<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ge\u00e7ersiz parametre kullan\u0131m\u0131ndan kaynakl\u0131 <code>OGG-15051 Java or JNI exception \/ DBUTIL-00032<\/code> (Process Abending) hatalar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7mek i\u00e7in, properties dosyas\u0131n\u0131 sadece resmi olarak desteklenen ve optimize edilmi\u015f parametrelerle yap\u0131land\u0131r\u0131yoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ====================================================================\n# Oracle GoldenGate Big Data Adapter - Elasticsearch Handler Config\n# ====================================================================\n\n# Handler Tan\u0131mlamas\u0131\ngg.handlerlist=elasticsearch\ngg.handler.elasticsearch.type=elasticsearch\n\n# Elasticsearch Sunucu Ba\u011flant\u0131 Bilgileri\ngg.handler.elasticsearch.serverAddressList=10.10.10.13:9200\ngg.handler.elasticsearch.authType=none\n\n# S\u00fcr\u00fcc\u00fc ve Ba\u011f\u0131ml\u0131l\u0131k K\u00fct\u00fcphanelerinin Yolu (Classpath)\ngg.classpath=\/u02\/gg_deployments\/BigDataDeploy\/var\/lib\/dependencies\/*\n\n# Performans ve Yazma Stratejisi\ngg.handler.elasticsearch.bulkWrite=true\ngg.handler.elasticsearch.upsert=true<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>G\u00fcn\u00fcm\u00fcz veri mimarilerinde ili\u015fkisel veritabanlar\u0131n\u0131n (RDBMS) tutarl\u0131l\u0131\u011f\u0131 ile arama motorlar\u0131n\u0131n\/NoSQL platformlar\u0131n\u0131n h\u0131z\u0131n\u0131 bir araya getirmek kritik bir gereksinimdir. Transacting verileri bar\u0131nd\u0131ran kaynak veritaban\u0131ndaki de\u011fi\u015fiklikleri anl\u0131k olarak yakalay\u0131p (CDC) Elasticsearch cluster\u2019\u0131na aktarmak, arama performans\u0131n\u0131 ve analitik s\u00fcre\u00e7leri zirveye ta\u015f\u0131r. Bu blog serimizde, Oracle GoldenGate (OGG) 23ai Microservices Architecture kullanarak, kaynak veritaban\u0131ndan Elasticsearch 8.x ve gelece\u011fe haz\u0131r [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-1001","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel-en"],"_links":{"self":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/1001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/comments?post=1001"}],"version-history":[{"count":5,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/1001\/revisions"}],"predecessor-version":[{"id":1011,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/1001\/revisions\/1011"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media\/1002"}],"wp:attachment":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media?parent=1001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/categories?post=1001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/tags?post=1001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}