Introduction:

This Part 1 post will show you how to create a GoldenGate Free 23.3 (Hub) that connects to two Oracle Database Free 23.3 (I am calling them West and East). This is extremely easy if we take advantage of containers as I will describe it below.

Part 2 will demonstrate how to automate the creation of the GoldenGate Bi-direction replication in 23c in this infrastructure.


Pre Requirement:

Basic knowledge and understanding of containers and Docker are necessary to run execute this procedures. This post will not go into detail how containers works. I have created and tested this in my MacBook but same procedures should work well on Windows and Linux.

1- Install Docker:

https://docs.docker.com/engine/install/

2- Install Docker Compose:

https://docs.docker.com/compose/install/

3- Pull (Download) the database image (optional, but good if you want to make it repeatable)

docker pull alexlima/oracle-free:23.3-slim-ogg

4- Pull (Download) the goldengate image (optional, but good if you want to make it repeatable)

docker pull alexlima/goldengate-free:latest

Create the Containers

1- Copy and paste the code below to file in a local directory and name it as compose.yaml

alexlima@alexlima-mac 1_ORACLE_FTE % mkdir -p LABS/Docker/compose
alexlima@alexlima-mac compose % ls -lrt compose.yaml
-rw-------@ 1 alexlima  staff  2386 Oct 12 11:54 compose.yaml
  • compose.yaml file content:
# This Docker Compose file is for education purpose only and it contains all necessary components 
# to instantiate one Oracle GoldenGate 23c Free instance and two Oracle Database 23c Free instances

# This yaml file will create 3 docker containers:
#   1- One Oracle Goldengate Hub
#   2- One Oracle Database 23c Free (Named: West)
#   3- One Oracle Database 23c Free (Named: East) 

# To connect to goldengate and databases you can go to:
#  GG Free: https://localhost:415  [ user: oggadmin, password: Welcome##123 ]
#  GG Microservices: https://localhost:415/ogg  [ user: oggadmin, password: Welcome##123 ]
#
#  Database Service West for SQL Developer: localhost:1522/FREEPDB1  [ sys password: Welcome##123 ]
#  Database Service East for SQL Developer: localhost:1523/FREEPDB1  [ sys password: Welcome##123 ]
#
#  Internal ports all all the same: 1521
#  Database Service West for GoldenGate: 172.28.0.2:1521/FREEPDB1  [ oggadmin password: Welcome##123 ]
#  Database Service East for GoldenGate: 172.28.0.3:1521/FREEPDB1  [ oggadmin password: Welcome##123 ]

# Sample HR schema is installed on both databases

version: '3.8'
services:
# Create GoldenGate HUB Instance
 gg:
  container_name: ogg233demo
  hostname: ogg233demo
  image:  alexlima/goldengate-free:latest
  ports:
    - "415:443"
  deploy:
    resources:
        limits:
          cpus: '4.0'
          memory: 4098M
        reservations:
          cpus: '2.0'
          memory: 2048M
  environment:
    - OGG_ADMIN_PWD=Welcome##123 
    - OGG_DEPLOYMENT=west
  networks:
    ogg_docker_network:
      ipv4_address: 172.28.0.100
  volumes:
    - ${PWD}/cert:/etc/nginx/cert:rw

# Create WEST Side Database 23.3 Free
 databaseW:
  container_name: db233demoW
  hostname: db233demoW
  image: alexlima/oracle-free:23.3-slim-ogg
  ports:
    - "1522:1521"
  environment:
    - ORACLE_PASSWORD=Welcome##123
  restart: unless-stopped
  networks:
    ogg_docker_network:
      ipv4_address: 172.28.0.2

# Create EAST Side Database 23.3 Free
 databaseE:
  container_name: db233demoE
  hostname: db233demoE
  image: alexlima/oracle-free:23.3-slim-ogg
  ports:
    - "1523:1521"
  environment:
    - ORACLE_PASSWORD=Welcome##123
  restart: unless-stopped
  networks:
    ogg_docker_network:
      ipv4_address: 172.28.0.3

networks:
   ogg_docker_network:
     driver: bridge
     ipam:
      config:
       - subnet: 172.28.0.0/16


2- Navigate your cursor to the directory created

alexlima@alexlima-mac 1_ORACLE_FTE % cd LABS/Docker/compose

3- Execute the YAML file to create One GoldenGate Instance and Two Databases container infrastructure

alexlima@alexlima-mac compose % docker compose up -d
[+] Running 4/4
 ✔ Network compose_ogg_docker_network  Created                                                                                                                                                                               0.1s
 ✔ Container ogg233demo                Started                                                                                                                                                                               0.1s
 ✔ Container db233demoE                Started                                                                                                                                                                               0.1s
 ✔ Container db233demoW                Started                                                                                                                                                                               0.1s
alexlima@alexlima-mac compose %

4- Check the container’s health

alexlima@alexlima-mac compose % docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS                    PORTS                                           NAMES
b7d6183ec0e2   alexlima/goldengate-free:latest      "/u01/oggf/bin/boots…"   33 seconds ago   Up 31 seconds (healthy)   80/tcp, 0.0.0.0:415->443/tcp, :::415->443/tcp   ogg233demo
48cfcd661172   alexlima/oracle-free:23.3-slim-ogg   "/opt/oracle/run.sh"     33 seconds ago   Up 31 seconds             0.0.0.0:1522->1521/tcp, :::1522->1521/tcp       db233demoW
2f7496418a57   alexlima/oracle-free:23.3-slim-ogg   "/opt/oracle/run.sh"     33 seconds ago   Up 31 seconds             0.0.0.0:1523->1521/tcp, :::1523->1521/tcp       db233demoE

5- Connect to the GoldenGate Instance

To connect to goldengate and databases you can go to:


6- Connect to both Database Instances (West and East)

  • Database Service West for SQL Developer: localhost:1522/FREEPDB1
  • Database Service East for SQL Developer: localhost:1523/FREEPDB1
  • [ username: sys password: Welcome##123 ]

7- Delete the entire infrastructure at once

alexlima@alexlima-mac compose % docker compose down
[+] Running 4/4
 ✔ Container db233demoE                Removed                                                                                                                                                                              10.7s
 ✔ Container ogg233demo                Removed                                                                                                                                                                              11.0s
 ✔ Container db233demoW                Removed                                                                                                                                                                              11.2s
 ✔ Network compose_ogg_docker_network  Removed

This end the easy steps for infrastructure deployment of GoldenGate in a Docker (Container) configuration.

What’s Next?

Part 2 of this series will demonstrate how we can automate the GoldenGate processes from connections to add schematrandata, and checkpoint tables to enable extracts and replicats. Stay tuned and subscribe.

3 responses to “Part 1- Deploy GoldenGate 23c Free and two Oracle Database 23.3 on Docker in just a few Minutes”

  1. Part 2 – Build GoldenGate Bi-Direction Replication in few minutes on Docker – An Oracle Spin by Alex Lima Avatar

    […] that we have completed Part 1 to set up the Container infrastructure, it’s time to create the GoldenGate replication. The […]

    Like

  2. raja sinha Avatar
    raja sinha

    How can we deploy this inside a compute VM in OCI. I tried this and were able to start the containers in the compute vm. But after that, i am not able to access the GG console or access the sql developer from my local laptop machine. Checked the security lists and everything seems to be fine.

    Like

    1. Alex Lima Avatar

      Hummm, i guess you will need to re-route the host calls to the container IP. Look up how to access a container from outside the host.

      Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.