GoldenGate Free Docker Container

Facebook
Twitter
LinkedIn
Email

GoldenGate free using Docker Container Instances - Step by Step Details

GoldenGate Free Docker Container serves as Oracle’s starter version of replication software, offering users a taste of their top-tier product. This version provides application database administrators (DBAs) with the opportunity to understand fundamental concepts of GoldenGate, while effortlessly establishing data replication procedures using a user-friendly interface.

GoldenGate Free is designed for effortless downloading, user-friendly operation, and a comprehensive feature set. This package comprises the entire application portfolio, conveniently delivered within an Oracle Docker container, allowing seamless deployment in any environment, be it on-premises, in OCI, or on various other cloud platforms.

Restrictions or Potential Use Cases of GoldenGate Free:
  1. Development or Test Environment.
  2. Production Environment (for databases of 20GB or smaller).
  3. Training Tool in a Learning Environment.

ARCHITECTURE

GoldenGate Free Docker Container
PREREQUISITES REQUIREMENTS
  1. Access to Create Oracle Container Registry or use the existing container Registry.
  2. Access to a VM with Docker installed. How to Install Docker on VM? check here.
  3. Access to Cloud Shell. This article provides instructions on installing GoldenGate Free using a VM with Docker installed. The same steps can be performed with Cloud Shell.
https://container-registry.oracle.com/
Sign in to your Oracle account and agree and accept to the license agreement in order to download the GoldenGate Free docker image from the Oracle Container Registry.
container-registry.oracle.com
This page provides you the information on how to run the GoldenGate Free
container-registry.oracle.com

STAGE 1 : Utilize Docker VM Or OCI Cloud Shell to pull the GoldenGate Free image

Before proceeding with pulling the image from Docker, let’s have the following information readily available:

Auth Token Information :
Login to OCI Console, select Identity -> Users -> User Details.
Click on Auth Tokens and Generate one as shown below.
Copy the auth token to a secure location for future retrieval, as it will not be visible again in the Console. 
OCI Auth-Token
Tenancy Details :

Login to OCI Console, select Governance & Administration -> Account Management -> Tenancy Details.
Make a note of Tenancy Name and Object Storage Namespace
Create Container Registry
Login to OCI Console -> Developer Services -> Containers & Artifacts -> Container Registry

Create Repositories
Click on Create Repository -> Select Compartment -> Type Repository Name
Login to DOCKER VM or Cloud Shell :
Execute the command in Docker VM to initiate a login to the Oracle Container Registry.
				
					docker login container-registry.oracle.com
Username: OCI Username 
Password: OCI Password

[root@vm-msa opc]# docker login container-registry.oracle.com
Authenticating with existing credentials...Username: Raghav@oraclegg.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
				
			
Use the below docker login command to log in to OCI Container Registry from Docker VM
docker login <region-key>.ocir.io
Replace “<region-key>” with the appropriate key for the OCI Container Registry region you are utilizing.
For instance, execute “docker login iad.ocir.io” for the IAD region.
More information about Availability by Region

Enter username and password
Username: OCI oracle username : Format-> TenacnyObjectnamespace/IDCS/username
If there is no IDCS TenacnyObjectnamespace/username
Password: Auth Token generated Earlier
				
					[root@vm-msa opc]# docker login iad.ocir.io
Username: id3nody**/oracleidentitycloudservice/raghav@oraclegg.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
				
			
Check the DOCKER Images
$docker images
				
					[root@vm-msa opc]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    9c7a54a9a43c   2 weeks ago   13.3kB
[root@vm-msa opc]#

				
			
Now lets pull the latest GoldenGate Free image from the docker.
$ docker run -p 80:80 -p 443:443 container-registry.oracle.com/goldengate/goldengate-free:21.9.0.0-oracle

Make a note of the password from the log displayed.
————————————————————————————————-
Password for OGG administrative user ‘oggadmin’ is ‘xxxxxxxx’
————————————————————————————————
				
					6e971872040e: Pull complete
be56908c97b3: Pull complete
787108c1d121: Pull complete
4f4fb700ef54: Pull complete
459a4c80b16d: Pull complete
39e80ff48961: Pull complete
e1f009432bbc: Pull complete
3116b688722e: Pull complete
3fa09ca01904: Pull complete
e389768cb001: Pull complete
08276ef070bf: Pull complete
4a120ae67602: Pull complete
ad5938a146fc: Pull complete
d27549167751: Pull complete
34113bf0fdb8: Pull complete
fdb6ec26adf5: Pull complete
aa580e81aa0a: Pull complete
e43ed8bf19d7: Pull complete
Digest: sha256:8f6038fe451b6802dde0ae3e32e94f833b83d991d1c7da1efc318dd3c088f60f
Status: Downloaded newer image for container-registry.oracle.com/goldengate/goldengate-free:21.9.0.0-oracle
----------------------------------------------------------------------------------
--  Password for OGG administrative user 'oggadmin' is 'XXXXXXXXXXX'
----------------------------------------------------------------------------------
OGG_SECURE_DEPLOYMENT=false
APP_HOME=/u01/oggf
APP_DATA_HOME=/u02/oggf
/u01/oggf/deploymentId
OGGF_DEPLOYMENT_ID=bdddeb79-0027-44af-aa84-b7f0c159e48a
/u02/oggf/certificate /u02/oggf
Generating a 4096 bit RSA private key
**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++
2023-05-22T00:26:04+0000 INFO: <== startup: Starting
2023-05-22T00:26:04+0000 INFO: startup: Launching Java process
JAVA_PROPERTIES= -Dggfe.conf=/u02/oggf/config/ggfe.conf -Dsecurity.conf=/u02/oggf/config/security.conf -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djava.util.logging.config.file=/u02/oggf/config/logging.properties -Dmp.jwt.verify.publickey.location=file:///u02/oggf/config/verify-jwk.json -DAPP_HOME=/u01/oggf -DAPP_DATA_HOME=/u02/oggf -DoggfApiServerUrl=74a71acc8ad0/oggfServices -DdeploymentId=bdddeb79-0027-44af-aa84-b7f0c159e48a -DoggfDomain=74a71acc8ad0 -DsecureKeyStorePath=/u02/oggf/config/ggfe.p12
ARGS=
2023-05-22T00:26:04+0000 INFO: startup: Launched java class PID 670
2023-05-22T00:26:04+0000 INFO: ==> startup: Finished
2023-05-22T00:26:04+0000 INFO: <== postStartup: Starting
2023-05-22T00:26:04+0000 INFO: ==> postStartup: Finished
2023-05-22T00:26:04+0000 INFO: *****************************************************************************************
2023-05-22T00:26:04+0000 INFO: **    Finished all startup steps for service
2023-05-22T00:26:04+0000 INFO: *****************************************************************************************
This is a idle script (infinite loop) to keep container running.
2023.05.22 00:26:04 INFO oracle.cloud.ggfe.mds.bdb.BdbStorage Thread[main,5,main]: Storage : /u02/oggf/storage
2023.05.22 00:26:07 INFO io.helidon.common.LogConfig Thread[main,5,main]: Logging at initialization configured using /u02/oggf/config/logging.properties
2023.05.22 00:26:10 INFO io.helidon.microprofile.tyrus.WebSocketCdiExtension Thread[main,5,main]: Registering websocket application at /
2023.05.22 00:26:10 INFO io.helidon.microprofile.server.ServerCdiExtension Thread[main,5,main]: Registering JAX-RS Application: GGFEApplication
2023.05.22 00:26:11 INFO io.helidon.webserver.tyrus.TyrusSupport Thread[main,5,main]: Updating TyrusSupport routing routes
2023.05.22 00:26:11 INFO io.helidon.webserver.NettyWebServer Thread[nioEventLoopGroup-2-1,10,main]: Channel '@default' started: [id: 0x65b9ee3c, L:/0.0.0.0:8080]
2023.05.22 00:26:11 INFO io.helidon.microprofile.server.ServerCdiExtension Thread[main,5,main]: Server started on http://localhost:8080 (and all other host addresses) in 7228 milliseconds (since JVM startup).
2023.05.22 00:26:11 INFO oracle.cloud.ggfe.Main Thread[main,5,main]: Server started at: http://localhost:8080
2023.05.22 00:26:11 INFO io.helidon.common.HelidonFeatures Thread[features-thread,5,main]: Helidon MP 2.5.3 features: [CDI, Config, Fault Tolerance, Health, JAX-RS, Metrics, Open API, REST Client, Security, Server, Tracing, Websocket]
				
			
Now let us check the DOCKER Images again to check the latest downloaded image of GoldenGate

$docker images
				
					[root@vm-msa opc]# docker images
REPOSITORY                                                 TAG               IMAGE ID       CREATED       SIZE
hello-world                                                latest            9c7a54a9a43c   2 weeks ago   13.3kB
container-registry.oracle.com/goldengate/goldengate-free   21.9.0.0-oracle   4a4228dc200d   3 weeks ago   2.07GB
[root@vm-msa opc]#

				
			
Create a TAG for the GoldenGate Free image and use the Docker Push command to push the image into the OCI Container Registry.

$ docker tag 4a4228dc200d iad.ocir.io/id3nodyt0***/ggfreerep:ggfree
Image ID from the docker images command : 4a4228dc200d
region : iad.ocir.io (Ashburn)
Tenancy Namespace : id3nodyt0***
Container Registry Repository Information: ggfreerep
tag : ggfree

$ docker push iad.ocir.io/id3nodyt***/ggfreerep:ggfree
				
					[root@vm-msa opc]# docker tag 4a4228dc200d iad.ocir.io/id3nodyt***/ggfreerep:ggfree
[root@vm-msa opc]# docker push iad.ocir.io/id3nodyt***/ggfreerep:ggfree
The push refers to repository [iad.ocir.io/id3nodyt****/ggfreerep]
5f70bf18a086: Pushed
d8d0ed3300da: Pushed
c031bc168c8f: Pushed
1589f39d0971: Pushed
93b67d62755c: Pushed
08740b3c08ec: Pushed
ffb688687b0c: Pushed
5c8fe8ed5855: Pushed
7a625ea55a5a: Pushed
aa183e1488a6: Pushed
596ab43f2772: Pushed
15af47afcdb7: Pushed
7f864ab01c42: Pushed
b780cac21283: Pushed
2620e32a2900: Pushed
03ad4f7f1ba5: Pushed
0126c5a83dc8: Pushed
48b31a62abe9: Pushed
7f6db4f08e1b: Pushed
2f2c9b5ec77a: Pushed
b376b88860c8: Pushed
e08c25272dcc: Pushed
e81db670e59e: Pushed
2fab6635ba86: Pushed
1eab6675b5fe: Pushed
6b4c150e3167: Pushed
ggfree: digest: sha256:8f6038fe451b6802dde0ae3e32e94f833b83d991d1c7da1efc318dd3c088f60f size: 5962

				
			
STAGE 2 : Set up OCI Container Instances
Create Container Instance
Login to OCI Console -> Developer Services -> Containers & Artifacts -> Container Instance

Follow the below images of onscreen instructions.
GGFREE OCI Container Instance
GGFREE OCI Container Instance
GGFREE OCI Container Instance
GGFREE OCI Container Instance
STAGE 3 : Access GoldenGate Free Instance
After a quick launch, GoldenGate Free instance is now ACTIVE within the container.

Since a public IP address has been assigned to the instance, you can easily access the GoldenGate Free WebUI on the internet.
The overview page from the above image  for the container instance displays the assigned public IP address.

Access the assigned IP address to a GoldenGater Container free from a web browser.
Example : http://<PUBLIC-IP>/PORT
Login Credentials for GoldenGate Free

Default Username : oggadmin
Password:

Since we have not provided the initial password during setup, the container generated random password will be generated for the Oracle GoldenGate administrative user.

You can locate this password at the beginning of the container log.
Select Container Instances -> Containers -> Name : In this case container-GGFREE -> View Logs
Initial Password-Log
After successfully logged in, you can begin creating connections to the source and target databases and setting up the replication pipeline.

Check my next Blog on How to Create Pipeline in Oracle GoldenGate Free Instance.
SUMMARY In this article, we demonstrated on how to create GOLDENGATE FREE using Docker Container on OCI for testing and training purpose.
For more information about GoldenGate Free see the oracle official documentation here.

Hope you found this article useful.
Disclaimer: The views expressed on this document are my own and do not necessarily reflect the views of Oracle.