Overview
In the dynamic landscape of enterprise applications, real-time data synchronization is not merely a luxury but a strategic imperative. For organizations running critical Oracle PeopleSoft environments, ensuring high availability, disaster recovery, seamless reporting, and efficient cloud migration hinges on robust, real-time replication capabilities. Oracle GoldenGate 21c, with its advanced Microservices Architecture (MA) and deep integration with Oracle Cloud Infrastructure (OCI), offers a compelling solution for achieving this between on-premises PeopleSoft databases and their counterparts in OCI.
Oracle GoldenGate 21c represents a significant leap forward in real-time data integration. Built upon the resilient Microservices Architecture, it delivers enhanced scalability, manageability, and security compared to its classic architecture predecessors. When paired with OCI GoldenGate, a fully managed, cloud-native service, it provides an end-to-end, high-performance replication pipeline that simplifies operations and accelerates cloud adoption strategies for PeopleSoft customers.
This article delves into the intricacies of setting up Oracle GoldenGate 21c for real-time, bi-directional (though we'll focus on on-premises to OCI for brevity) data replication between an on-premises Oracle Database hosting PeopleSoft and an Oracle Database System in OCI. We will explore the architectural components, essential configurations, and best practices to ensure a secure, efficient, and reliable data flow, vital for maintaining the integrity and availability of your PeopleSoft applications.
The primary use cases for such a setup are manifold:
- Cloud Migration: Facilitate a phased, low-downtime migration of PeopleSoft to OCI.
- Disaster Recovery (DR): Maintain a continuously synchronized standby PeopleSoft environment in OCI, ready for rapid failover.
- Reporting and Analytics: Offload reporting and analytical workloads to an OCI-based replica without impacting the performance of the on-premises production system.
- Hybrid Cloud Operations: Support hybrid architectures where certain PeopleSoft modules or integrations might reside in OCI while core transactions remain on-premises.
By leveraging GoldenGate 21c's sophisticated change data capture (CDC) and delivery mechanisms, organizations can achieve near-zero downtime for critical operations, ensuring business continuity and agility.
Prerequisites
Before embarking on the GoldenGate 21c replication journey, a solid foundation of prerequisites must be in place, encompassing both on-premises infrastructure and Oracle Cloud Infrastructure (OCI) components.
On-Premises Database (Source - PeopleSoft)
- Oracle Database Version: The source Oracle Database must be in a version supported by GoldenGate 21c. Typically, Oracle Database 12c Release 2 (12.2.0.1) or higher, with Oracle Database 19c being the most common and recommended choice for compatibility and long-term support.
- Archivelog Mode: The database must be running in ARCHIVELOG mode to enable GoldenGate to read redo logs for change data capture.
- Supplemental Logging: Minimal supplemental logging must be enabled at the database level, and if specific tables are involved, at the table level. This ensures that the necessary primary key and unique key information is written to the redo logs for GoldenGate.
- Network Connectivity: Secure and reliable network connectivity to OCI is essential. This can be achieved via a VPN Connect (IPSec VPN) or Oracle Cloud Infrastructure FastConnect for dedicated, high-bandwidth connections. Ensure necessary firewall rules are open for GoldenGate's Distribution Server (default port 7809 for secure connections) and for database connectivity (default port 1521).
- GoldenGate 21c Installation: Oracle GoldenGate 21c Microservices Architecture (MA) must be installed and configured on a dedicated server or VM with sufficient resources.
- Database User: A dedicated Oracle Database user with appropriate privileges for GoldenGate operations (e.g.,
CONNECT,RESOURCE,SELECT ANY DICTIONARY,FLASHBACK ANY TABLE,ALTER ANY TABLE,EXECUTE ON DBMS_FLASHBACK,GRANT SELECT ON V_$ARCHIVED_LOG, etc.) must be created.
Oracle Cloud Infrastructure (OCI)
- Virtual Cloud Network (VCN): A VCN with at least one private subnet for the OCI GoldenGate deployment and another private subnet for the OCI Database System is required.
- Security Lists/Network Security Groups (NSGs): Configure security lists or NSGs to allow traffic between the on-premises GoldenGate Distribution Server and the OCI GoldenGate Receiver Server (port 7809), and between OCI GoldenGate and the OCI Database System (port 1521).
- OCI GoldenGate Deployment: An OCI GoldenGate deployment (version 21c or compatible) must be provisioned within the chosen VCN and subnet. This will serve as the target GoldenGate instance.
- OCI Database System (Target - PeopleSoft): An Oracle Database System (e.g., VM DB System, Exadata Cloud Service, or Autonomous Database) must be provisioned in OCI to host the PeopleSoft target database. This database should ideally be of the same version or a compatible higher version as the on-premises source.
- OCI IAM Policies: Appropriate IAM policies must be in place to allow users or groups to manage OCI GoldenGate deployments, database systems, and networking resources.
- Database User: A dedicated Oracle Database user with appropriate privileges for GoldenGate operations (similar to the on-premises user) must be created in the target OCI Database.
PeopleSoft Application Considerations
- Schema Knowledge: A deep understanding of the PeopleSoft database schema is crucial for effective replication. This includes identifying core application tables (e.g., PS_ tables), tables with large objects (LOBs), and tables that might not need replication (e.g., temporary tables, audit logs if handled differently).
- Sequence Handling: PeopleSoft heavily relies on sequences. During initial load and ongoing replication, careful consideration must be given to how sequences are managed to prevent conflicts, especially in active-active scenarios or if sequences are generated on the target.
- DDL Operations: PeopleSoft applications often perform DDL operations. GoldenGate 21c can replicate DDL, but careful filtering might be necessary to avoid replicating DDL that is specific to one environment or could cause issues on the target (e.g., temporary table creation).
Step-by-Step Implementation
1. On-Premises Database Preparation (Source)
First, connect to your on-premises PeopleSoft database as a DBA and enable necessary logging and create a dedicated GoldenGate user.
sqlplus / as sysdba
-- Check if in ARCHIVELOG mode
ARCHIVE LOG LIST;
-- If not in ARCHIVELOG mode, enable it (requires database restart)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- Enable minimal supplemental logging (required for GoldenGate)
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-- Create GoldenGate user and grant necessary privileges
CREATE USER cdb_ggadmin IDENTIFIED BY "YourSecurePassword123" CONTAINER=ALL;
GRANT CONNECT, RESOURCE TO cdb_ggadmin CONTAINER=ALL;
GRANT CREATE SESSION, ALTER SYSTEM, SELECT ANY DICTIONARY, FLASHBACK ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$TRANSACTION TO cdb_ggadmin CONTAINER=ALL;
GRANT EXECUTE ON DBMS_FLASHBACK TO cdb_ggadmin CONTAINER=ALL;
ALTER USER cdb_ggadmin QUOTA UNLIMITED ON USERS;
-- Grant specific privileges for DDL capture if needed
GRANT ALTER ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT CREATE ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT DROP ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT LOCK ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
-- Enable supplemental logging for specific PeopleSoft tables if not using full supplemental logging
-- This is often done at the schema level for PeopleSoft.
-- For example, for PS_APPL_JRNL_HDR:
-- ALTER TABLE PS.PS_APPL_JRNL_HDR ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
-- For a full schema, it's usually done via GoldenGate parameters or full DB supplemental logging.
-- For a PDB:
-- ALTER SESSION SET CONTAINER = PDB1;
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
2. On-Premises GoldenGate 21c Microservices Configuration (Source)
Assuming GoldenGate 21c MA is installed, access the Service Manager URL (e.g., `https://gg_server_ip:9000`).
a. Create a GoldenGate Service Manager
This is typically done during installation, but ensure it's running. It manages Administration Server, Distribution Server, Receiver Server, and Performance Metrics Server.
b. Configure a Database Connection to the Source PeopleSoft DB
From the Administration Server console (e.g., `https://gg_server_ip:9001`):
- Navigate to "Configuration" -> "Database".
- Click "Add Database".
- Provide connection details:
- Alias:
PEOPLESOFT_SOURCE - Database Type: Oracle Database
- Connection String:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_onprem_db_host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=your_pdb_service_name)))oryour_onprem_db_host:1521/your_pdb_service_name - Username:
cdb_ggadmin - Password:
YourSecurePassword123 - Wallet Path: (If using TCPS/SSL)
- Alias:
- Test and save the connection.
c. Create a Credential Store Entry
This stores the database user credentials securely.
-- On the GoldenGate server, open ggsci (classic) or use the Administration Server UI
-- Command line example (for classic, but concept applies to MA for DB credentials)
-- For MA, you typically add these via the UI when creating connections
-- This example is more illustrative of the underlying credential store
cd /path/to/gg_home/bin
./ggsci
GGSCI> ADD CREDENTIALSTORE
GGSCI> ALTER CREDENTIALSTORE ADD USER cdb_ggadmin@PEOPLESOFT_SOURCE PASSWORD YourSecurePassword123 ALIAS gg_source_db_alias DOMAIN OracleGoldenGate
-- In a Microservices environment, these are managed through the Administration Server UI under 'Configuration -> Credential Store'.
-- You will add the database user, password, and alias there.
d. Add and Register the Extract Process (Change Data Capture)
From the Administration Server console:
- Navigate to "Overview".
- Click "Add Extract".
- Choose "Online Extract (Integrated)".
- Provide details:
- Extract Name:
EXT_PS_ONPREM - Source Database: Select
PEOPLESOFT_SOURCEalias. - Trail File Name:
ps(this will create `ps000000`, `ps000001`, etc.)
- Extract Name:
- Click "Create and Configure".
- Edit the parameter file:
-- EXT_PS_ONPREM.prm
EXTRACT EXT_PS_ONPREM
SETENV (ORACLE_HOME="/u01/app/oracle/product/19.0.0/dbhome_1")
SETENV (TNS_ADMIN="/u01/app/oracle/product/19.0.0/dbhome_1/network/admin")
DBLOGIN USERIDALIAS gg_source_db_alias DOMAIN OracleGoldenGate
TRANLOGOPTIONS DBLOGREADER
ARCHIVELOGONLY
-- Optional: For specific PDB, if not already connected to it
-- SOURCEDB your_pdb_service_name;
-- DDL capture (consider carefully for PeopleSoft)
DDL INCLUDE MAPPED OBJS
DDLOPTIONS ADDSUPPLOG
-- Trail file for local writes
EXTTRAIL /u00/app/oracle/ogg/dirdat/ps
-- Tables to replicate (adjust schema and table names as per your PeopleSoft implementation)
-- Consider using wildcards for PeopleSoft schemas like PS.*
TABLE PS.PSACCESSPRFL;
TABLE PS.PSACCESSPROFILE;
TABLE PS.PSAPPL_JRNL_HDR;
TABLE PS.PSAPPL_JRNL_LN;
TABLE PS.PS_JOB;
TABLE PS.PS_PERSONAL_DATA;
-- ... add all necessary PeopleSoft tables.
-- For a full PeopleSoft schema:
-- TABLE PS.*;
- Save and start the extract.
- Register the extract with the source database (this is done automatically for Integrated Extract, but important to understand):
GGSCI> REGISTER EXTRACT EXT_PS_ONPREM DATABASE
e. Configure the Distribution Server
The Distribution Server pushes the trail files to the OCI GoldenGate Receiver Server.
- From the Administration Server console, navigate to "Overview".
- Click "Add Distribution Path".
- Configure:
- Path Name:
DPATH_TO_OCI - Source Extract:
EXT_PS_ONPREM - Target Host:
your_oci_gg_private_endpoint_ip(e.g.,10.0.1.5) - Target Port:
7809(default for Receiver Server) - Target Trail Name:
oc(this will create `oc000000`, `oc000001`, etc. on OCI GG) - Security: Enable SSL/TLS (Highly recommended for cross-cloud replication).
- User ID:
oggadmin(OCI GoldenGate admin user) - Password:
YourOCIGGAdminPassword
- Path Name:
- Save and start the distribution path.
3. OCI Networking Configuration
Ensure your VCN, subnets, and security rules are correctly set up to allow communication between your on-premises GoldenGate and OCI GoldenGate, and between OCI GoldenGate and your OCI Database.
# Assuming you have an OCI VCN (ocid1.vcn.oc1.phx.aaaaaaaa...)
# and subnets (e.g., ocid1.subnet.oc1.phx.aaaaaaaabbbb for OCI GoldenGate, ocid1.subnet.oc1.phx.aaaaaaaacccc for OCI DB)
# Example OCI CLI commands (replace with your actual compartment/VCN/subnet OCIIDs and CIDRs)
# --- Security List for OCI GoldenGate Subnet ---
# Allow inbound from on-premises GG (e.g., 192.168.1.0/24) to OCI GG Receiver Server (port 7809)
oci network security-list update \
--security-list-id ocid1.securitylist.oc1.phx.aaaaaaaadddd \
--ingress-security-rules '[{"protocol": "6", "source": "192.168.1.0/24", "source-type": "CIDR_BLOCK", "tcp-options": {"destination-port-range": {"max": 7809, "min": 7809}}}]' \
--force
# Allow inbound from OCI GoldenGate to OCI DB (port 1521)
oci network security-list update \
--security-list-id ocid1.securitylist.oc1.phx.aaaaaaaabbbb \
--ingress-security-rules '[{"protocol": "6", "source": "10.0.1.0/24", "source-type": "CIDR_BLOCK", "tcp-options": {"destination-port-range": {"max": 1521, "min": 1521}}}]' \
--force
# --- Security List for OCI Database Subnet ---
# Allow inbound from OCI GoldenGate Subnet (e.g., 10.0.1.0/24) to OCI DB (port 1521)
oci network security-list update \
--security-list-id ocid1.securitylist.oc1.phx.aaaaaaaacccc \
--ingress-security-rules '[{"protocol": "6", "source": "10.0.1.0/24", "source-type": "CIDR_BLOCK", "tcp-options": {"destination-port-range": {"max": 1521, "min": 1521}}}]' \
--force
# Ensure your on-premises firewall also allows outbound to OCI GoldenGate IP/port 7809.
4. OCI GoldenGate Deployment
Provision an OCI GoldenGate deployment if you haven't already. This is done via the OCI Console or CLI.
oci goldengate deployment create \
--compartment-id ocid1.compartment.oc1..aaaaaaaaxxxxx \
--display-name "PeopleSoft_OCI_GG" \
--license-model "BRING_YOUR_OWN_LICENSE" \
--deployment-type "OGG" \
--is-auto-scaling-enabled false \
--is-publicly-accessible false \
--subnet-id ocid1.subnet.oc1.phx.aaaaaaaabbbb \
--cpu-core-count 2 \
--description "OCI GoldenGate deployment for PeopleSoft replication" \
--wait-for-state "ACTIVE"
# Once active, retrieve its private IP for configuring the on-prem Distribution Server.
# You can find this in the OCI Console under the deployment details.
5. OCI Database Preparation (Target)
Connect to your OCI Database System's PeopleSoft target database as a DBA and prepare it for GoldenGate.
sqlplus admin/YourOCIDBAdminPassword@your_oci_pdb_tns_alias
-- Create GoldenGate user (similar to source)
CREATE USER cdb_ggadmin IDENTIFIED BY "YourSecurePassword123" CONTAINER=ALL;
GRANT CONNECT, RESOURCE TO cdb_ggadmin CONTAINER=ALL;
GRANT CREATE SESSION, ALTER SYSTEM, SELECT ANY DICTIONARY, FLASHBACK ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO cdb_ggadmin CONTAINER=ALL;
GRANT SELECT ON V_$TRANSACTION TO cdb_ggadmin CONTAINER=ALL;
GRANT EXECUTE ON DBMS_FLASHBACK TO cdb_ggadmin CONTAINER=ALL;
ALTER USER cdb_ggadmin QUOTA UNLIMITED ON USERS;
-- Grant specific privileges for DDL capture if needed
GRANT ALTER ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT CREATE ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT DROP ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
GRANT LOCK ANY TABLE TO cdb_ggadmin CONTAINER=ALL;
-- Create the GoldenGate checkpoint table in the target database
-- This table is crucial for recovery and tracking replication progress.
CONNECT cdb_ggadmin/YourSecurePassword123@your_oci_pdb_tns_alias;
CREATE TABLE GGS_CHECKPOINT_TABLE (
LOG_TIMESTAMP TIMESTAMP(6),
LOG_SEQUENCE VARCHAR2(255),
LOG_OFFSET NUMBER,
EXTRACT_NAME VARCHAR2(255),
EXTRACT_SEQUENCE NUMBER,
EXTRACT_OFFSET NUMBER,
REPLICAT_NAME VARCHAR2(255),
REPLICAT_SEQUENCE NUMBER,
REPLICAT_OFFSET NUMBER,
PRIMARY KEY (EXTRACT_NAME, REPLICAT_NAME)
);
6. OCI GoldenGate Configuration (Target)
Access the OCI GoldenGate deployment console (e.g., `https://your_oci_gg_private_endpoint_ip:443`). Log in as `oggadmin`.
a. Configure a Database Connection to the Target PeopleSoft DB
- Navigate to "Configuration" -> "Database".
- Click "Add Database".
- Provide connection details:
- Alias:
PEOPLESOFT_TARGET - Database Type: Oracle Database
- Connection String:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_oci_db_private_ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=your_oci_pdb_service_name))) - Username:
cdb_ggadmin - Password:
YourSecurePassword123 - Wallet Path: (If using TCPS/SSL)
- Alias:
- Test and save the connection.
b. Create a Credential Store Entry
Similar to the source, create a credential store entry for the target database user.
-- In OCI GoldenGate Administration Server UI under 'Configuration -> Credential Store'.
-- Add the target database user, password, and alias.
c. Add the Replicat Process
From the OCI GoldenGate Administration Server console:
- Navigate to "Overview".
- Click "Add Replicat".
- Choose "Replicat (Non-Integrated)". (Integrated Replicat is typically used for same-database or Exadata targets).
- Provide details:
- Replicat Name:
REP_PS_OCI - Target Database: Select
PEOPLESOFT_TARGETalias. - Trail File Name:
oc(this matches the target trail name from the Distribution Server) - Starting Checkpoint: Choose appropriate starting point. For initial setup, typically "Beginning of Trails" or a specific sequence.
- Replicat Name:
- Click "Create and Configure".
- Edit the parameter file:
-- REP_PS_OCI.prm
REPLICAT REP_PS_OCI
SETENV (ORACLE_HOME="/u01/app/oracle/product/19.0.0/dbhome_1") -- Adjust for OCI DB System
SETENV (TNS_ADMIN="/u01/app/oracle/product/19.0.0/dbhome_1/network/admin") -- Adjust for OCI DB System
DBLOGIN USERIDALIAS gg_target_db_alias DOMAIN OracleGoldenGate
ASSUMETARGETDEFS
HANDLECOLLISIONS
-- Checkpoint table
CHECKPOINTTABLE cdb_ggadmin.GGS_CHECKPOINT_TABLE
-- DDL replication (consider carefully for PeopleSoft)
DDL INCLUDE MAPPED OBJS
DDLOPTIONS ADDTRANDATA, ADDSUPPLOG
-- Handle PeopleSoft sequences
-- This is a critical point for PeopleSoft. If sequences are generated on the target,
-- you might need to exclude them from replication or use different strategies.
-- For simple replication, where source is master, you might map sequences.
-- SEQUENCE PS.PS_SEQ_ID, START_VAL 100000000, MAX_VAL 999999999; -- Example, needs careful planning
-- Tables to replicate (must match source tables)
MAP PS.PSACCESSPRFL, TARGET PS.PSACCESSPRFL;
MAP PS.PSACCESSPROFILE, TARGET PS.PSACCESSPROFILE;
MAP PS.PSAPPL_JRNL_HDR, TARGET PS.PSAPPL_JRNL_HDR;
MAP PS.PSAPPL_JRNL_LN, TARGET PS.PSAPPL_JRNL_LN;
MAP PS.PS_JOB, TARGET PS.PS_JOB;
MAP PS.PS_PERSONAL_DATA, TARGET PS.PS_PERSONAL_DATA;
-- ... add all necessary PeopleSoft tables.
-- For a full PeopleSoft schema:
-- MAP PS.*, TARGET PS.*;
- Save and start the replicat.
7. Initial Data Load (Optional but Recommended)
Before starting the replicat,