Breadcrumb

Description

# Oracle Globally Distributed Database on Container Oracle Globally Distributed Database enables high scalability and availability by distributing and replicating data across a pool of Oracle Databases that do not share hardware or software. This pool appears as a single logical database to applications. ## How to Build and Run Learn how to build and deploy Oracle Globally Distributed Database using container images and the Podman engine. 1. Read each section of this README in order. 2. After reviewing the requirements, you can skip the image and container creation sections if they do not apply to your environment. **Before you proceed:** - Install the Podman engine. - See [Oracle Container Runtime for Podman Documentation](https://docs.oracle.com/en/operating-systems/oracle-linux/podman/toc.htm) to install and configure Podman. You can use an XFS file system with an overlay2 file system. - **IMPORTANT:** You must deploy the Oracle Global Service Manager container to configure the Oracle Globally Distributed Database. ## Using GSM and Oracle Database Image **Goal:** Deploy an Oracle Globally Distributed Database topology using the steps below. 1. [Download Oracle Database Image](#download-oracle-database-image) 2. [Download Oracle GSM Image](#download-oracle-gsm-image) 3. [Create Network Bridge](#create-network-bridge) 4. [Password Setup](#password-setup) 5. [Deploying Catalog Container](#deploying-catalog-container) 6. [Deploying Shard Containers](#deploying-shard-containers) 7. [Deploying GSM Container](#deploying-gsm-container) 8. [User Defined Sharding](#user-defined-sharding) 9. [System Managed Sharding using RAFT Replication](#system-managed-sharding-using-raft-replication) 10. [Support](#support) 11. [Documentation Accessibility](#documentation-accessibility) 12. [Access to Oracle Support](#access-to-oracle-support) 13. [License](#license) 14. [Copyright](#copyright) ### Download Oracle Database Image You need an Oracle Database container image for the shards and the catalog. Download the prebuilt Oracle Database single-instance container image from [Oracle Container Registry (OCR)](https://container-registry.oracle.com/ords/f?p=113:10::::::). To pull the image, run: ```bash podman pull container-registry.oracle.com/database/enterprise_ru:latest ``` ### Download Oracle GSM Image You need an Oracle GSM container image. Download the prebuilt Oracle GSM container image from OCR. [OCR](https://container-registry.oracle.com/ords/f?p=113:10::::::). To pull the GSM container image, run the following command: ``` podman pull container-registry.oracle.com/database/gsm_ru:latest ``` **Note** This document uses the latest RU database `container-registry.oracle.com/database/enterprise_ru:latest` and GSM `container-registry.oracle.com/database/gsm_ru:latest` images. If you want to use a different version, then change the image name accordingly. ### Create Network Bridge Set up container network connectivity for your Oracle Globally Distributed Database deployment. Before creating a container, create the Podman network by provisioning a Podman network bridge based on your environment. If you use the bridge name and network subnet mentioned in this README.md file, then you can use the same IPs mentioned in the [Create Containers](#create-containers) section. #### Macvlan Bridge ``` # podman network create -d macvlan --subnet=10.0.20.0/24 --gateway=10.0.20.1 -o parent=eth0 shard_pub1_nw ``` #### Ipvlan Bridge ``` # podman network create -d ipvlan --subnet=10.0.20.0/24 --gateway=10.0.20.1 -o parent=eth0 shard_pub1_nw ``` If you are planning to create a test environment within a single machine, then you can use a Podman bridge. However, these IPs will not be reachable on the user network. #### Bridge ``` # podman network create --driver=bridge --subnet=10.0.20.0/24 shard_pub1_nw ``` **Note:** You can change the subnet and choose one of the Podman network bridge options indicated above, based on your environment. ### Create Containers Build the catalog and shard containers required for Oracle Globally Distributed Database deployment. Before creating the GSM container, you must build the catalog and shard containers using the following steps: #### Set up Hostfile All containers require a shared host file for name resolution. Create the shared host file (if it doesn't exist) at `/opt/containers/shard_host_file`. For example: ``` # mkdir /opt/containers # touch /opt/containers/shard_host_file ``` Because Oracle database containers do not have root access to modify the `/etc/hosts` file, add the following host entries in `/opt/containers/shard_host_file`. This file must be prepopulated. Adjust these entries as necessary based on your environment and network setup. ``` 127.0.0.1 localhost.localdomain localhost 10.0.20.100 oshard-gsm1.example.com oshard-gsm1 10.0.20.101 oshard-gsm2.example.com oshard-gsm2 10.0.20.102 oshard-catalog-0.example.com oshard-catalog-0 10.0.20.103 oshard1-0.example.com oshard1-0 10.0.20.104 oshard2-0.example.com oshard2-0 10.0.20.105 oshard3-0.example.com oshard3-0 10.0.20.106 oshard4-0.example.com oshard4-0 ``` #### Password Setup Configure a secure common password for database users. Specify a secret volume to reset database user passwords during catalog and shard setup. This secret volume should be shared among all containers. ``` mkdir /opt/.secrets/ cd /opt/.secrets openssl genrsa -out key.pem openssl rsa -in key.pem -out key.pub -pubout ``` Edit the `/opt/.secrets/pwdfile.txt` and seed the password. It will be a common password for all the database users. To edit the file, run the following command: ``` vi /opt/.secrets/pwdfile.txt ``` **Note**: Enter your secure password in the `pwdfile.txt` file and save the file. After seeding the password and saving the `/opt/.secrets/pwdfile.txt` file, run the following commands: ``` openssl pkeyutl -in /opt/.secrets/pwdfile.txt -out /opt/.secrets/pwdfile.enc -pubin -inkey /opt/.secrets/key.pub -encrypt rm -rf /opt/.secrets/pwdfile.txt ``` Oracle recommends using Podman secrets inside the containers. Run the following commands to create the Podman secrets: ``` podman secret create pwdsecret /opt/.secrets/pwdfile.enc podman secret create keysecret /opt/.secrets/key.pem ``` **Note:** This password and key secrets are used for the initial Oracle Globally Distributed Database topology setup. After the Oracle Globally Distributed Database topology setup is complete, you must change the topology passwords based on your enviornment. ### Deploying Catalog Container Deploy the shard catalog for Oracle Globally Distributed Database. The _shard catalog_ is a dedicated Oracle Database that is a persistent store for Oracle Globally Distributed Database configuration data. The shard catalog plays a key role in the automated deployment and centralized management of an Oracle Globally Distributed Database. It also hosts the gold schema of the application, and the master copies of common reference data (duplicated tables). ##### Create Directory You must create a mountpoint on the Podman host to save datafiles for the shard catalog database, and expose it as a volume to the catalog container. This volume can be local on a Podman host, or exposed from your central storage. It contains a file system, such as EXT4. During the setup of this README.md, we used the directory `/oradata/dbfiles/CATALOG` and exposed it as volume to the catalog container. ``` mkdir -p /oradata/dbfiles/CATALOG chown -R 54321:54321 /oradata/dbfiles/CATALOG ``` **Notes**: * Because the catalog container must be writable by the oracle user "oracle" (uid: 54321) inside the container, you must change the ownership for the data volume `/oradata/dbfiles/CATALOG` that is exposed to the catalog container. * If ownership is not changed, then database creation will fail. For details, see: [oracle/docker-images for Single Instance Database](https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance). ##### Create Container Before creating the GSM catalog container, review the following notes carefully: **Notes** * Change environment variables such as ORACLE_SID and ORACLE_PDB, based on your environment. * Change `/oradata/dbfiles/CATALOG` based on your environment. * By default, the setup creates a new database under `/opt/oracle/oradata` based on the ORACLE_SID environment variable. ``` podman run -d --hostname oshard-catalog-0 \ --dns-search=example.com \ --network=shard_pub1_nw \ --ip=10.0.20.102 \ -e DOMAIN=example.com \ -e ORACLE_SID=CATCDB \ -e ORACLE_PDB=CAT1PDB \ -e OP_TYPE=catalog \ -e COMMON_OS_PWD_FILE=pwdsecret \ -e PWD_KEY=keysecret \ -e SHARD_SETUP="true" \ -e ENABLE_ARCHIVELOG=true \ --secret pwdsecret \ --secret keysecret \ -v /scratch/oradata/dbfiles/CATALOG:/opt/oracle/oradata \ -v /opt/containers/shard_host_file:/etc/hosts \ --privileged=false \ --name catalog container-registry.oracle.com/database/enterprise_ru:latest Mandatory Parameters: COMMON_OS_PWD_FILE: Specify the Podman secret created with the encrypted password file PWD.key: Specify the Podman secret with the password key file to decrypt the encrypted password OP_TYPE: Specify the operation type. For Shards, it has to be set to catalog. DOMAIN: Specify the domain name ORACLE_SID: CDB name, which has to be "FREE" for Oracle Database FREE ORACLE_PDB: PDB name, which has to be "FREEPDB1" for Oracle Database FREE DB_UNIQUE_NAME DB_UNIQUE_NAME name that you want to set Optional Parameters: CUSTOM_SHARD_SCRIPT_DIR: Specify the location of custom scripts that you want to run after setting up the catalog. CUSTOM_SHARD_SCRIPT_FILE: Specify the file name that you want to run after catalog setup This file name must be available in the CUSTOM_SHARD_SCRIPT_DIR location. ``` To check the catalog container and services creation logs, run a `tail` command on the Podman logs. It will take approximately 20 minutes to create the catalog container service. ``` podman logs -f catalog ``` **IMPORTANT:** The resulting images will consist of an image with the Oracle Database binaries installed. On first startup of the container, a new database will be created. When the Shard database is ready to be used, you will see lines such as these: ============================================== GSM Catalog Setup Completed ============================================== #### Deploying Shard Containers Deploy database shards for Oracle Globally Distributed Database. A _database shard_ in Oracle Globally Distributed Database is an Oracle database that contains a subset of data. Each sharded table in Oracle Globally Distributed Database is horizontally partitioned across shards. You must create a mountpoint on the Podman host to save datafiles for Oracle Globally Distributed Database, and expose the mountpoint as a volume to the shard container. This volume can be local on a Podman host, or exposed from your central storage. It contains a file system, such as EXT4. During the setup of this README.md, we used the directory `/oradata/dbfiles/ORCL1CDB` and exposed it as volume to the shard container. ##### Create Directories ``` mkdir -p /oradata/dbfiles/ORCL1CDB mkdir -p /oradata/dbfiles/ORCL2CDB chown -R 54321:54321 /oradata/dbfiles/ORCL2CDB chown -R 54321:54321 /oradata/dbfiles/ORCL1CDB ``` **Notes**: * Because these containers must be writable by the oracle user "oracle" (uid: 54321) inside the container, you must change the ownership for the data volumes `/oradata/dbfiles/ORCL1CDB` and `/oradata/dbfiles/ORCL2CDB` that are exposed to the shard container. * If ownership is not changed, then database creation will fail. For details, see: [oracle/docker-images for Single Instance Database](https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance). ##### Shard1 Container Before creating the shard1 container, review the following notes carefully: **Notes** * Change environment variables such as ORACLE_SID and ORACLE_PDB based on your environment. * Change `/oradata/dbfiles/ORCL1CDB` based on your environment. * By default, the setup creates a new database under `/opt/oracle/oradata` based on the ORACLE_SID environment variable. ``` podman run -d --hostname oshard1-0 \ --dns-search=example.com \ --network=shard_pub1_nw \ --ip=10.0.20.103 \ -e DOMAIN=example.com \ -e ORACLE_PDB=ORCL1PDB \ -e DB_UNIQUE_NAME=ORCL1CDB \ -e OP_TYPE=primaryshard \ -e COMMON_OS_PWD_FILE=pwdsecret \ -e PWD_KEY=keysecret \ -e SHARD_SETUP="true" \ -e ENABLE_ARCHIVELOG=true \ --secret pwdsecret \ --secret keysecret \ -v /oradata/dbfiles/ORCL1CDB:/opt/oracle/oradata \ -v /opt/containers/shard_host_file:/etc/hosts \ --privileged=false \ --name shard1 container-registry.oracle.com/database/enterprise_ru:latest Mandatory Parameters: COMMON_OS_PWD_FILE: Specify the Podman secret created with the encrypted password file. PWD.key: Specify the Podman secret with the password key file to decrypt the encrypted password. OP_TYPE: Specify the operation type. For Shards it must be set to primaryshard or standbyshard. DOMAIN: Specify the domain name. ORACLE_SID: CDB name, which must be "FREE" for Oracle Database FREE. ORACLE_PDB: PDB name, which must be "FREEPDB1" for Oracle Database FREE. DB_UNIQUE_NAME DB_UNIQUE_NAME name that you want to set. Optional Parameters: CUSTOM_SHARD_SCRIPT_DIR: Specify the location of custom scripts that you want to run after setting up shard setup. CUSTOM_SHARD_SCRIPT_FILE: Specify the file name that you want to run after the shard database setup. This file must be available in the CUSTOM_SHARD_SCRIPT_DIR location. ``` To check the shard1 container and services creation logs, run a `tail` command on the Podman logs. It will take approximately 20 minutes to create the shard1 container service. ``` podman logs -f shard1 ##### Shard2 Container Before creating the shard2 container, review the following notes carefully: **Notes** * Change environment variables such as ORACLE_SID and ORACLE_PDB based on your environment. * Change `/oradata/dbfiles/ORCL2CDB` based on your environment. * By default, the setup creates new database under `/opt/oracle/oradata` based on the ORACLE_SID environment variable. ``` podman run -d --hostname oshard2-0 \ --dns-search=example.com \ --network=shard_pub1_nw \ --ip=10.0.20.104 \ -e DOMAIN=example.com \ -e ORACLE_SID=ORCL2CDB \ -e ORACLE_PDB=ORCL2PDB \ -e OP_TYPE=primaryshard \ -e COMMON_OS_PWD_FILE=pwdsecret \ -e PWD_KEY=keysecret \ -e SHARD_SETUP="true" \ -e ENABLE_ARCHIVELOG=true \ --secret pwdsecret \ --secret keysecret \ -v /oradata/dbfiles/ORCL2CDB:/opt/oracle/oradata \ -v /opt/containers/shard_host_file:/etc/hosts \ --privileged=false \ --name shard2 container-registry.oracle.com/database/enterprise_ru:latest Mandatory Parameters: COMMON_OS_PWD_FILE: Specify the Podman secret created with the encrypted password file. PWD.key: Specify the Podman secret with the password key file to decrypt the encrypted password. OP_TYPE: Specify the operation type. For Shards, it must be set to primaryshard or standbyshard. DOMAIN: Specify the domain name. ORACLE_SID: CDB name, which must be "FREE" for Oracle Database FREE. ORACLE_PDB: PDB name, which must be "FREEPDB1" for Oracle Database FREE. DB_UNIQUE_NAME DB_UNIQUE_NAME name that you want to set. Optional Parameters: CUSTOM_SHARD_SCRIPT_DIR: Specify the location of custom scripts that you want to run after running the shard setup. CUSTOM_SHARD_SCRIPT_FILE: Specify the file name of a script that you want to run after the shard database setup. This file must be available in the CUSTOM_SHARD_SCRIPT_DIR location. ``` **Note**: You can add more shards based on your requirements. To check the shard2 container and services creation logs, run a `tail` command on the Podman logs. It will take approximately 20 minutes to create the shard2 container service ``` podman logs -f shard2 ``` **IMPORTANT:** The resulting images will be an image with the Oracle binaries installed. On first startup of the container, a new database will be created. The Shard database is ready to be used when you see these lines: ============================================== GSM Shard Setup Completed ============================================== ``` #### Deploying GSM Container You must create the mountpoint on the Podman host to save GSM setup-related files for Oracle Global Service Manager and expose the mountpoint as a volume to the GSM container. This volume can be local on a Podman host, or exposed from your central storage. It contains a file system, such as EXT4. During the setup of this README.md, we used the directory `/oradata/dbfiles/GSMDATA` and exposed it as volume to the GSM container. ##### Create Directory ``` mkdir -p /oradata/dbfiles/GSMDATA chown -R 54321:54321 /oradata/dbfiles/GSMDATA ``` ##### Create GSM Master Container ``` podman run -d --hostname oshard-gsm1 \ --dns-search=example.com \ --network=shard_pub1_nw \ --ip=10.0.20.100 \ -e DOMAIN=example.com \ -e SHARD_DIRECTOR_PARAMS="director_name=sharddirector1;director_region=region1;director_port=1522" \ -e SHARD1_GROUP_PARAMS="group_name=shardgroup1;deploy_as=primary;group_region=region1" \ -e CATALOG_PARAMS="catalog_host=oshard-catalog-0;catalog_db=CATCDB;catalog_pdb=CAT1PDB;catalog_port=1521;catalog_name=shardcatalog1;catalog_region=region1,region2" \ -e SHARD1_PARAMS="shard_host=oshard1-0;shard_db=ORCL1CDB;shard_pdb=ORCL1PDB;shard_port=1521;shard_group=shardgroup1" \ -e SHARD2_PARAMS="shard_host=oshard2-0;shard_db=ORCL2CDB;shard_pdb=ORCL2PDB;shard_port=1521;shard_group=shardgroup1" \ -e SERVICE1_PARAMS="service_name=oltp_rw_svc;service_role=primary" \ -e SERVICE2_PARAMS="service_name=oltp_ro_svc;service_role=primary" \ -e GSM_TRACE_LEVEL="OFF" \ -e COMMON_OS_PWD_FILE=pwdsecret \ -e PWD_KEY=keysecret \ --secret pwdsecret \ --secret keysecret \ -e SHARD_SETUP="true" \ -v /scratch/oradata/dbfiles/GSMDATA:/opt/oracle/gsmdata \ -v /opt/containers/shard_host_file:/etc/hosts \ -e OP_TYPE=gsm \ -e MASTER_GSM="TRUE" \ --privileged=false \ --name gsm1 container-registry.oracle.com/database/gsm_ru:latest Mandatory Parameters: SHARD_DIRECTOR_PARAMS: Accept a key value pair separated by a semicolon. For example: =;= for following = pairs: key=director_name, value=shard director name key=director_region, value=shard director region key=director_port, value=shard director port SHARD[1-9]_GROUP_PARAMS: Accept a key value pair separated by a semicolon. For example: =;= for following = pairs: key=group_name, value=shard group name key=deploy_as, value=deploy shard group as primary or active_standby key=group_region, value=shard group region name **Notes**: SHARD[1-9]_GROUP_PARAMS is in regex form. You can specify environment parameters based on your environment, such as SHARD1_GROUP_PARAMS, or SHARD2_GROUP_PARAMS. Each SHARD[1-9]_GROUP_PARAMS must have the key value pair that you specify above. CATALOG_PARAMS: Accept a key value pair separated by a semicolon. For example: =;= for the following = pairs: key=catalog_host, value=catalog hostname key=catalog_db, value=catalog cdb name key=catalog_pdb, value=catalog pdb name key=catalog_port, value=catalog db port name key=catalog_name, value=catalog name in GSM key=catalog_region, value=specify comma-delimited region name for the catalog database deployment key=catalog_chunks, value=number of chunks. In this example we used 12 for Oracle AI Database 23.26ai FREE Database SHARD[1-9]_PARAMS: Accept a key value pair separated by semicolon. For example: =;= for following = pairs: key=shard_host, value=shard hostname key=shard_db, value=shard cdb name key=shard_pdb, value=shard pdb name key=shard_port, value=shard db port key=shard_group value=shard group name **Notes** SHARD[1-9]_PARAMS is in regex form. You can specify environment parameters based on your environment, such as SHARD1_PARAMS, SHARD2_PARAMS. Each SHARD[1-9]_PARAMS must have the above key value pair. SERVICE[1-9]_PARAMS: Accept a key value pair separated by a semicolon. For example: =;= for following = pairs: key=service_name, value=service name key=service_role, value=service role. For example: primary, or physical_standby **Notes**: SERVICE[1-9]_PARAMS is in regex form. You can specify environment parameters based on your environment, such SERVICE1_PARAMS, SERVICE2_PARAMS. Each SERVICE[1-9]_PARAMS must have the above key value pair. COMMON_OS_PWD_FILE: Specify the Podman secret created with the encrypted password file PWD.key: Specify the Podman secret with the password key file to decrypt the encrypted password OP_TYPE: Specify the operation type. For GSM, it must be set to gsm. DOMAIN: Domain of the container. MASTER_GSM: Set value to "TRUE" if you want the GSM to be a master GSM. Otherwise, do not set it. Optional Parameters: SAMPLE_SCHEMA: Specify a value to "DEPLOY" if you want to deploy sample app schema in catalog DB during GSM setup. CUSTOM_SHARD_SCRIPT_DIR: Specify the location of custom scripts that you want to run after setting up GSM. CUSTOM_SHARD_SCRIPT_FILE: Specify the file name which must be available on CUSTOM_SHARD_SCRIPT_DIR location to be executed after GSM setup. BASE_DIR: Specify BASE_DIR if you want to change the base location of the scripts to setup GSM. Note that the CUSTOM_SHARD_SCRIPT_DIR/CUSTOM_SHARD_SCRIPT_FILE will run after GSM setup, but BASE_DIR specifies the location of the scripts used to set up the GSM. The default is set to `$INSTALL_DIR/startup/scripts`. SCRIPT_NAME: Specify the script name that will be run from BASE_DIR. The default is set to `main.py`. EXECUTOR: Specify the script executor, such as `/bin/python` or `/bin/bash`. The default is set to `/bin/python`. ``` **Note:** Change environment variables such as DOMAIN, CATALOG_PARAMS, PRIMARY_SHARD_PARAMS, COMMON_OS_PWD_FILE and PWD_KEY according to your environment. To check the `gsm1` container and services creation logs, run a `tail` command on the Podman logs. It will take approximately two minutes to create the GSM container service. ``` podman logs -f gsm1 ``` #### Create GSM Standby Container Create another GSM container. The second GSM is required for scalability and availability. ##### Create Directory ``` mkdir -p /oradata/dbfiles/GSM2DATA chown -R 54321:54321 /oradata/dbfiles/GSM2DATA ``` ##### Create Container ``` podman run -d --hostname oshard-gsm2 \ --dns-search=example.com \ --network=shard_pub1_nw \ --ip=10.0.20.101 \ -e DOMAIN=example.com \ -e SHARD_DIRECTOR_PARAMS="director_name=sharddirector2;director_region=region2;director_port=1522" \ -e SHARD1_GROUP_PARAMS="group_name=shardgroup1;deploy_as=active_standby;group_region=region2" \ -e CATALOG_PARAMS="catalog_host=oshard-catalog-0;catalog_db=CATCDB;catalog_pdb=CAT1PDB;catalog_port=1521;catalog_name=shardcatalog1;catalog_region=region1,region2" \ -e SHARD1_PARAMS="shard_host=oshard1-0;shard_db=ORCL1CDB;shard_pdb=ORCL1PDB;shard_port=1521;shard_group=shardgroup1" \ -e SHARD2_PARAMS="shard_host=oshard2-0;shard_db=ORCL2CDB;shard_pdb=ORCL2PDB;shard_port=1521;shard_group=shardgroup1" \ -e SERVICE1_PARAMS="service_name=oltp_rw_svc;service_role=standby" \ -e SERVICE2_PARAMS="service_name=oltp_ro_svc;service_role=standby" \ -e GSM_TRACE_LEVEL="OFF" \ -e CATALOG_SETUP="True" \ -e COMMON_OS_PWD_FILE=pwdsecret \ -e PWD_KEY=keysecret \ --secret pwdsecret \ --secret keysecret \ -v /scratch/oradata/dbfiles/GSM2DATA:/opt/oracle/gsmdata \ -v /opt/containers/shard_host_file:/etc/hosts \ -e OP_TYPE=gsm \ --privileged=false \ --name gsm2 container-registry.oracle.com/database/gsm_ru:latest **Note:** Change environment variables such as DOMAIN, CATALOG_PARAMS, COMMON_OS_PWD_FILE and PWD_KEY according to your environment. Mandatory Parameters: CATALOG_SETUP: Accept True. if set, then it only restricts until catalog connection and setup are complete. CATALOG_PARAMS: Accept key value pair separated by semicolon. For example: =;=. complete this for the following = pairs: key=catalog_host, value=catalog hostname key=catalog_db, value=catalog cdb name key=catalog_pdb, value=catalog pdb name key=catalog_port, value=catalog database port name key=catalog_name, value=catalog name in GSM key=catalog_region, value=specify comma-delimited region names for catalog database deployment ``` To check the gsm2 container and services creation logs, run a `tail` command on the Podman logs. It will take approximately two minutes to create the GSM container service. ``` podman logs -f gsm2 ``` **IMPORTANT:** The resulting images will consist of an image with the Oracle GSM binaries installed. On first startup of the container, a new GSM setup will be created. When the GSM setup is ready to be used, the following lines are displayed: ``` ============================================== GSM Setup Completed ============================================== ``` ## User Defined Sharding Refer to user-defined sharding deployment instructions if needed. The steps above describe System-Managed Sharding. If you want to use User-Defined Sharding to deploy an Oracle Globally Distributed Database, then see: [Container Based Sharding Deployment](https://github.com/oracle/db-sharding/blob/master/container-based-sharding-deployment/README.md). # Documentation Accessibility For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id-docacc. # Access to Oracle Support Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired. Copyright © 2006, 2026, Oracle and/or its affiliates. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency

Short URL for Repo

https://container-registry.oracle.com/ords/ocr/ba/database/gsm

License Agreement (Not Logged In)

Please sign in using your Oracle Account to accept the license agreement for the Oracle container you have selected.

Pull Command for Latest

docker pull

Tags

TagOS/ArchitectureSizePull CommandLast UpdatedImage ID
latestlinux/amd64784 MBdocker pull container-registry.oracle.com/database/gsm:latest2 weeks agoe1d303ddb97c
23.26.1.0linux/amd64784 MBdocker pull container-registry.oracle.com/database/gsm:23.26.1.02 weeks agoe1d303ddb97c
23.26.0.0linux/amd64780.17 MBdocker pull container-registry.oracle.com/database/gsm:23.26.0.04 months ago4ad023431af5
23.7.0.0linux/amd64768.43 MBdocker pull container-registry.oracle.com/database/gsm:23.7.0.01 years ago494413938105
23.5.0.0linux/amd64790.83 MBdocker pull container-registry.oracle.com/database/gsm:23.5.0.01.5 years ago38a10af81221
21.3.0.0linux/amd641.69 GBdocker pull container-registry.oracle.com/database/gsm:21.3.0.04.4 years ago523f362fee17