Containern und auch Kubernetes sei dank, daß sich Oracle GoldenGate zum Datenaustausch für unterschiedliche Systeme schnell und bequem einrichten läßt. Seit etwa März 2025 gibt es das kostenlose GoldenGate Free auch für non-Oracle Datenbanken wie Postgres, mySQL und den Microsoft SQL Server. Sowohl als vorbereitete, gepatchte Container und als Anschauungsmaterial für eigene Zwecke auch als Kubernetes Installation, d.h. helm chart.
GoldenGate Free darf produktiv genutzt werden aber ist begrenzt auf Datenbank-Größen bis zu 20 GB. Durchaus typische Größen für viele Postgres, mySQL und Oracle 23ai free Umgebungen.
Eine Beschreibung der Free-Lizenz ist Teil der Oracle GoldenGate Dokumentation. Updates sind erhältlich in Form von neuen Containern auf container-registry.oracle.com.

Zahlreiche Youtube Videos, Blogs und eine eigene Dokumentation bieten freien Support in gutem wenn auch nicht-interaktivem Umfang. Die Dokumentation zum Start und zur Nutzung der jeweiligen Container liegt ebenfalls auf container-registry.oracle.com vor und beschreibt auch weiterführende Themen wie SSL Verschlüsselung und Anbindung eventuell notwendiger Volumes zur Vorhaltung von Logs und den lebenswichtigen Trail-Dateien voller Change Log Informationen der angezapften Datenbanken.
Zu den GoldenGate Free Container Images für den Datenaustausch und mit Browser Oberfläche für Monitoring, Administration und Konfiguration gesellt sich das GoldenGate Studio Free Container Image mit einer weiteren browser-basierten Oberfläche für die komfortable Einrichtung verschiedener Szenarios wie uni- und bidirektionalem Sync, Daten-Urladung, Daten-Mapping usw. durch sogenannte “Recipes”. Aber es geht auch um die Vorbereitung der Datenbanken für den Datenabgleich, z.B. dem Setzen notwendiger Datenbank Parameter. GoldenGate Studio free funktioniert aktuell ausschließlich mit Oracle Datenbanken.
Um einer eventuellen Verwirrung vorzubeugen eine kleine zusätzliche Information: Der ebenfalls noch auf container-registry.oracle.com liegende Container “Oracle GoldenGate free” ist eine etwas ältere Version (23.5 statt 23.7 oder neuer) von Oracle GoldenGate free für Oracle mit darin bereits enthaltenem GoldenGate Studio free.
Möchten Sie beispielsweise Daten zwischen einer Postgres- und einer mySQL Datenbank austauschen, so sollten Sie die Container von GoldenGate free für Postgres und von GoldenGate free für mySQL herunterladen und starten. Die Container tauschen, korrekt konfiguriert, untereinander über WebSocket Verbindungen (basierend auf dem HTTPS Protokoll) die gesammelten Datenbank Logs aus. Ein Container liest kontinuierlich aus der Quelldatenbank und einer schreibt in das Zielsystem. Sollte Ihr Vorhaben hingegen sein, zwei entfernt liegende Postgres Datenbanken zu synchronisieren, so können Sie entweder zweimal GoldenGate free für Postgres starten, einmal in der Nähe der Quelle und einmal beim Ziel, oder Sie verwenden nur einen einzigen Container der sich wie ein Kraken mit den beteiligten Postgres Datenbanken verbindet. Erstes Szenario wird von Oracle eine Mesh installation genannt, das zweite Szenario bildet einen Hub. Um das Gedankenspiel noch etwas weiter zu führen: laufen alle beteiligten Container auf demselben Server oder im gleichen Netz haben Sie vielleicht physisch einen Hub eingerichtet, logisch aber immer noch ein Mesh aus kommunizierenden Prozessen…

Für die Einrichtung von GoldenGate (free und auch Vollversion) speziell unter Kubernetes gibt es sowohl Blog-Beschreibungen unseres Product Managements als auch YAML Dateien in einem github repository, beschrieben durch einen Artikel im Herbst 2024 in unseren Blogs. Seit kurzem wurden zu Testzwecken und für Ihre Referenz einige helm charts erstellt für die automatisierte Einrichtung unter Kubernetes. Diese liegen im Quellcode ebenfalls auf github.com, nur an anderer Stelle als die vorigen YAML Dateien. Und die helm charts sind verlinkt und auffindbar auf artifacthub.io, gewissermaßen gleich neben dem neuen Oracle Operator 1.2 for Kubernetes:

Die hinterlegten helm charts sind auch geeignet, um die GoldenGate Vollversionen zu installieren. Allerdings müßten Sie ihre eigenen Container Images bauen und deren Download URL als Parameter für das helm chart hinterlegen.
Anstatt die Anleitungen und Anweisungen auf artifacthub.io zu befolgen können Sie die helm charts auch direkt per Kommandozeile in Ihrer Umgebung registrieren und installieren. Sie benötigen lediglich einen Zugang per kubectl Kommando zu Ihrem Kubernetes Cluster sowie das helm Tool.
Das Repository registrieren Sie wie folgt:
$ helm repo add oggfree https://ilfur.github.io/VirtualAnalyticRooms $ helm repo list NAME URL bitnami https://charts.bitnami.com/bitnami ingress-nginx https://kubernetes.github.io/ingress-nginx oggfree https://ilfur.github.io/VirtualAnalyticRooms
Dann schauen Sie sich gerne an, welche Installations-Routinen in dem Repository vorhanden sind. Es sind einige mehr als nur Oracle GoldenGate free. Sie alle dienen als Beispiel und können von Ihnen von github heruntergeladen und gerne weiter angepaßt werden.
$ helm search repo oggfree NAME CHART VERSION APP VERSION DESCRIPTION oggfree/analytics-server 1.0.0 6.4.0 Oracle Analytics Server oggfree/cman 1.0.5 23.5.0.0 Oracle Connection Manager oggfree/goldengate-bigdata 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Distributed... oggfree/goldengate-free 2.0.0 23.5.0.24.07 Oracle GoldenGate Microservices FREE for Oracle... oggfree/goldengate-mssql 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for MSSQL Database oggfree/goldengate-mysql 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for MySQL Database oggfree/goldengate-mysql-free 2.0.1 23.8.0.25.04 Oracle GoldenGate FREE for mysql oggfree/goldengate-oracle 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Oracle Data... oggfree/goldengate-oracle-free 2.0.1 23.8.0.25.04 Oracle GoldenGate Microservices FREE for Oracle... oggfree/goldengate-postgres 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Postgres Da... oggfree/goldengate-postgres-free 2.0.1 23.8.0.25.04 Oracle GoldenGate Microservices FREE for Postgres oggfree/goldengate-sqlserver-free 2.0.1 23.8.0.25.04 Oracle GoldenGate FREE for sqlserver oggfree/goldengate-studio-free 2.0.0 23.7.1.25.02 Oracle GoldenGate Studio FREE oggfree/graph-server 2.0.6 24.4.0.0.0 Oracle Graph & RDF Server with UI plus Jupyter ... oggfree/jupyterhub 1.3.8 1.5.0 JupyterHub brings the power of notebooks to gro... oggfree/oml4py-notebook 1.0.0 1.0 Oracle Machine Learning 4 Python Jupyter Notebook oggfree/ords 2.0.0 latest Oracle APEX, Database Actions and numerous REST... oggfree/sqlcl-liquibase 1.0.0 21.3.0.0.0 Oracle sqlcl with liquibase integration oggfree/stream-analytics 1.0.0 19.1.0.0.6.3 Oracle GoldenGate Stream Analytics
Um beispielsweise GoldenGate Studio free zu installieren, laden Sie sich zuerst die zur Installation gehörige Parameter Datei herunter (auch values genannt) und passen sie an Ihre Gegebenheiten an:
$ helm show values oggfree/goldengate-studio-free >studio.yaml
$ vi studio.yaml
### specify the name of an existing secret that contains the ogg admin username and password
ogg:
adminSecret: ogg-admin-secret
usernameKey: oggusername
passwordKey: oggpassword
## the name of an OGG deployment, mostly "local", or ogg-east, ogg-west, ...
deploymentName: local
## request sizes of some PVCs, beware that there can be many big trail files ...
storage:
configSize: 1Gi
logSize: 10Gi
trailSize: 50Gi
storageClass: rook-ceph-block
image:
pullPolicy: IfNotPresent
imageName: container-registry.oracle.com/goldengate/goldengate-studio-free:23.7.1.25.02
services:
### You can choose to create an istio virtualservice or an ingress in front
### with a virtual host name of ggate.<suffix>
external:
### set type to either ingress , virtualservice or none if You need something customized
type: ingress
### typical ingressClasses are nginx and istio
ingressClass: nginx
### ignored if type is not virtualservice
vserviceGateway: istio-system/http-istio-gateway
vhostName: ggate.141.147.33.9.nip.io
internal:
type: ClusterIP
port: 8080
Sie erkennen vielleicht anhand der vorgeschlagenen Parameter, dass vorab ein kubernetes Secret angelegt werden sollte, welches den Benutzernamen und das Kennwort des zukünftigen GoldenGate Admin-Users enthält. Diese beiden Angaben werden dann in den Container bei dessen erstem Start eingeflanscht. Das Secret sollte, aber muss nicht, den Namen ogg-admin-secret tragen. Und es sollte dann auch die Schlüssel oggusername und oggpassword beinhalten, mit entsprechenden Werten dahinter. Legen wir also für die Installation nun einen neuen Namespace an und legen das Secret sowie die restliche Installation darin ab:
$ kubectl create namespace oggfree namespace/oggfree created $ kubectl create secret generic ogg-admin-secret -n oggfree --from-literal=oggusername=oggadmin --from-literal=oggpassword=Welcome1234# secret/ogg-admin-secret created $ helm install ggstudio oggfree/goldengate-studio-free --values studio.yaml -n oggfree NAME: ggstudio LAST DEPLOYED: Wed May 14 11:54:06 2025 NAMESPACE: oggfree STATUS: deployed REVISION: 1 TEST SUITE: None
Nun prüfen wir am besten, ob Container, Storage und Netzwerk Konfiguration ordentlich vorhanden sind und die Logs im Container keine Fehler enthalten wie beispielsweise ein zu simples Passwort. In meiner Testumgebung habe ich als StorageClass Parameter die für die Oracle Cloud (OCI) typische oci-bv verwendet anstelle der vorgegebenen rook-ceph-block, außerdem habe ich mich zunächst für einen Ingress vom Typ none entschieden und den internal service type auf LoadBalancer gesetzt, um keine manuellen port forwards verwenden zu müssen. Den Port habe ich dabei auf 8080 belassen, vielleicht keine so gute Wahl bei HTTPS Zugriffen aber es müßte funktionieren.
$ kubectl get pvc -n oggfree NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE ggstudio-goldengate-studio-free-u01-pvc Bound csi-2e23b64d-ac03-465f-b448-7d15ddbdd026 50Gi RWO oci-bv <unset> 33s ggstudio-goldengate-studio-free-u02-pvc Bound csi-ad027c1d-c144-4703-a65b-873546c9220d 50Gi RWO oci-bv <unset> 33s ggstudio-goldengate-studio-free-u03-pvc Bound csi-4bf859c8-d664-47a6-babf-abc332bab6f2 50Gi RWO oci-bv <unset> 33s $ kubectl get service -n oggfree NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ggstudio-goldengate-studio-free-svc LoadBalancer 10.96.53.119 111.222.333.444 8080:32487/TCP 50m $ kubectl get pod -n oggfree NAME READY STATUS RESTARTS AGE ggstudio-goldengate-studio-free-7f799cb74f-cpwbs 1/1 Running 0 39m $ kubectl logs ggstudio-goldengate-studio-free-7f799cb74f-cpwbs -n oggfree OGG_SECURE_DEPLOYMENT=false APP_HOME=/u01/oggf APP_DATA_HOME=/u02/oggf /u02/oggf/deploymentId OGGF_DEPLOYMENT_ID=c9b30913-230b-4546-bea8-5a01078310b7 /u02/oggf/certificate /u02/oggf Generating a RSA private key .................................++++ ...++++ writing new private key to '/u01/oggf/certificate/ca-key.pem' ----- Generating RSA private key, 4096 bit long modulus (2 primes) ...........................................++++ .....................................................................++++ e is 65537 (0x010001) Signature ok subject=CN = ggstudio-goldengate-studio-free-7f799cb74f-cpwbs Getting CA Private Key /etc/nginx/cert/ogg.pem.full: OK /etc/nginx/cert/ogg.pem: OK /u02/oggf OGG_SERVERCERT=/u02/oggf/certificate/server.pem OGG_SERVERCERT_KEYFILE=/u01/oggf/certificate/server-key.pem ....... .......
Da sehr viel Log output erzeugt wird habe ich nur die ersten paar Zeilen angegeben. Sie erkennen sicher bereits hier, daß SSL Zertifikate im Container beim Start erzeugt wurden, und dieser später auf dem HTTPS Protokoll und dem Container-internen Port 443 lauscht. Die Verwaltung von Zertifikaten könnten auch durch Kubernetes-Mittel erfolgen, die nötigen Dateien könnten als Volumes aus Kubernetes Secrets heraus eingebunden werden. Aber für einen ersten Wurf sollte das genügen. Rufen Sie den Service einmal über seine externe IP Adresse auf. Per HTTPS und auf dem durch den Load Balancer geöffneten externen Port 8080. In meinem Beispiel wäre also die URL https://111.222.333.444:8080 im Browser einzutragen. Die external-IP des Kubernetes Service vom Typ LoadBalancer und sein Port. Die Browser-Warnung wegen nicht offizieller Zertifikate darf vorerst auch ignoriert werden:

Sind Benutzername und Kennwort soweit korrekt eingegeben (in unserem Beispiel: oggadmin und Welcome1234# wie im Kubernetes Secret hinterlegt), so sollte sich nun die Startseite zeigen und Sie sind mit der grundsätzlichen Installation fertig.

Möchten Sie Anpassungen vornehmen und die Installation mit anderen Angaben testen, so müssen Sie nicht unbedingt direkt die Kubernetes Ressourcen wie Deployment, Pod, Services editieren. Sie können typischerweise die Installation rückgängig machen mit
$ helm uninstall ggstudio -n oggfree
Dann die Parameter in der Datei studio.yaml anpassen oder wahrscheinlich das Kubernetes Secret löschen und neu anlegen, schließlich erneut installieren.
Genau so wie GoldenGate Studio free lassen sich auch die anderen GoldenGate Container einrichten und dann per Browser oder REST API konfigurieren. Es können normalerweise Datenbank Verbindungen eingerichtet werden zu Datenbanken innerhalb und außerhalb des Kubernetes Clusters. Auch untereinander können die GoldenGate Container miteinander verknüpft werden über sogenannte Distribution Paths. Dafür sind wahlweise die internen ClusterIP Namen verwendbar oder die externen Namen und IP Adressen. Dabei sind jedoch die jeweiligen selbst generierten Zertifikate herunterzuladen und zu hinterlegen, oder einheitliche offizielle Zertifikate eines vorgeschalteten Ingress zu nutzen.
Auch dieses Mal – viel Spaß beim Testen und Ausprobieren!
Einige für Sie zusammengestellte Links und weiterführende Informationen:
Offizielle Ankündigung von GoldenGate Free für Postgres, mySQL und SQL Server
GoldenGate free Dokumentation
GoldenGate Youtube Kanal
Der Data Integration und GoldenGate Blog von Oracle
GoldenGate free Container auf container-registry.oracle.com
GoldenGate Vollversion (und auch free) in Kubernetes einrichten – ohne helm chart aber dafür mit Grafana Monitoring
Github Repository voller helm chart Quellen für GoldenGate, ORDS, Connection Manager, Graph Server und weitere Komponenten
Das durchsuchbare Kubernetes Paketarchiv “artifacthub.io”