Need fresh analytics without batch delays? This post shows how to replicate changes from Microsoft SQL Server to Autonomous Lakehouse in near real time using OCI GoldenGate Microservices, covering the core setup and validation steps end-to-end. Note: This walkthrough was completed in a test/non-production environment—please exercise due diligence and ensure you select the appropriate licensing when implementing in your environment.

Architecture diagram

Prerequisites

  • Microsoft Windows Server 2022 Standard Compute provisioned in public subnet (Microsoft SQL Server installed & configured)
  • Configure network route rules to allow TCP port 3389 (RDP) and 1433 (SQL Server) access to subnet
  • Provisioned 26ai Autonomous Lakehouse in private subnet

Task 1: Prepare Microsoft SQL Server for OCI GoldenGate

--Create SQL Server Login (Instance Level)
CREATE LOGIN GGADMIN WITH PASSWORD = '<password>';

--Create Database User for Login, maps server login to database user
CREATE USER GGADMIN FOR LOGIN GGADMIN;

--Grant Sysadmin Role (Convenience Access)
ALTER SERVER ROLE sysadmin ADD MEMBER GGADMIN;

--Create Source Database
CREATE DATABASE SRC_DB;

--Ensure database recovery model is compatible with CDC
ALTER DATABASE SRC_DB SET RECOVERY FULL;

--Switch Context to Source Database, following commands apply to SRC_DB
USE SRC_DB;

--Create Schema Owned by GGADMIN
CREATE SCHEMA SRC_DB_SCHEMA;
--Enable Change Data Capture (CDC), required for GoldenGate SQL Server capture
EXEC sys.sp_cdc_enable_db;

--Purge CDC staging table
EXECUTE sys.sp_cdc_drop_job 'cleanup'

--Create Sample Source Table
CREATE TABLE SRC_DB_SCHEMA.employees
(
    employee_id INT PRIMARY KEY,        -- Unique employee ID
    first_name  VARCHAR(50),            -- Employee first name
    last_name   VARCHAR(50),            -- Employee last name
    email       VARCHAR(100) UNIQUE,    -- Unique email address
    hire_date   DATE,                   -- Date of joining
    salary      DECIMAL(10,2)            -- Salary with 2 decimals
);
GO
INSERT INTO SRC_DB_SCHEMA.employees (employee_id, first_name, last_name, email, hire_date, salary)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com', '2024-01-01', 5000.00),
(2, 'Jane', 'Smith', 'jane.smith@example.com', '2024-02-01', 5500.00);

--Enable CDC on a specific Table, must be run after CDC is enabled at the database level
EXEC sys.sp_cdc_enable_table   
    @source_schema = 'SRC_DB_SCHEMA',   
    @source_name   = 'employees',   
    @role_name     = NULL;

Task 2: Prepare Autonomous Lakehouse for OCI GoldenGate

Since GGADMIN user already exist in Autonomous Lakehouse, run below commands to unlock the user and create identical schema/table structure for replication.

alter user ggadmin account unlock;
alter user ggadmin identified by <password>;
CREATE TABLE admin.employees
(
    employee_id INT PRIMARY KEY,        -- Unique employee ID
    first_name  VARCHAR(50),            -- Employee first name
    last_name   VARCHAR(50),            -- Employee last name
    email       VARCHAR(100) UNIQUE,    -- Unique email address
    hire_date   DATE,                   -- Date of joining
    salary      DECIMAL(10,2)            -- Salary with 2 decimals
);

Note: Schema and Tables DDL/Metadata eligible for real time data replication between source and Target must be manually created and made ready before starting the replicat process.

Task 3: Create OCI GoldenGate Deployments

From OCI GoldenGate, hit “Create deployment” and provide meaningful deployment name.

Create deployment

Under “Select a technology”, select “Microsoft SQL Server” for source deployment and “Oracle Database” for target deployment.

Create deployment

Select desired private subnet to deploy, provide meaningful GoldenGate instance name and administrator username. For password secret, simply hit “create password secret” to create password in desired vault

Create deployment

Under “Advanced options”, ensure “Enable GoldenGate console public access” for easier access to GoldenGate console. Select desired public subnet. Hit “Create” to create deployment.

Create deployment - advanced options
GoldenGate connections

Note: Repeat above process for target deployment creation. Add ingress rule to public subnet to allow GoldenGate instance in private subnet to access TCP port 1433.

GoldenGate deployments

Task 4: Create OCI GoldenGate connections and assign it to desired deployment

Under “Connections”, hit “Create connection” and provide a meaningful connection name

  • Type will be “Microsoft SQL Server” for source and “Oracle Autonomous AI Database” for target connection
  • Name of databases will be the of source and target respectively
  • Host is the private IP of Microsoft Windows Server 2022 Standard Compute
  • Username is the “GGADMIN” user created/unlocked above
Create connection
Create connection

For simplicity, under “Advanced options”, uncheck “Use vault secrets” so we can use normal password

Create connection - security settings

Hit “Create” once all information are keyed in

GoldenGate connections
GoldenGate connections

Under “Assigned deployments”, hit “Assign deployment”.

GoldenGate connections

Associate connection to respective deployment.

GoldenGate connections assignment

Hit “Test connection” and ensure connectivity test passed successfully.

GoldenGate connections
GoldenGate connections

Note: Repeat above process for target connection.

GoldenGate connections

Task 5: Setup connectivity between deployments

Upon successful connection to respective deployments, establish connection between them to enable trail file flow using distribution path.

GoldenGate deployments
GoldenGate deployments

In both source and target deployment GoldenGate Console, under “User Administration”, hit “+” to create a new “Operator” user. This user enables communication between the deployments. Hit “Submit”.

GoldenGate console - source

Under “Path Connections”, hit “+” and provide the user’s username and password created in above steps.

GoldenGate console - target
GoldenGate console - source

Note: Repeat process for target deployment

GoldenGate console - target

Task 6: Create (initial load) Extract Process

In source OCI GoldenGate console, under “Parameter Files”, update it to the source’s schema.

GoldenGate console - source

Under “DB Connections” > “TRANDATA information”, hit “+” to add schema Trandata. Hit “Submit”.

GoldenGate console - source

Verify that desired schema has been added.

GoldenGate console - source

Under “Extracts”, hit “+” and provide a meaningful extract name followed by hitting “Next”.

GoldenGate console - source

Select respective “Domain”, “Alias” and provide a trail name.

GoldenGate console - source

Replace *.* with desired <schemaName>.<tablename>. Hit “Create and Run”.

GoldenGate console - source

Verify that intended data in the source schema has been captured in this initial load extract.

GoldenGate console - source

To establish communication and move trail files between the 2 deployments, a Distribution Path is needed.

Navigate to target’s deployment GoldenGate console. Under “Receiver Service” > “Target-Initiated Path” > “+”, provide a meaningful path name.

GoldenGate console - target
GoldenGate console - target

Select “wss” as the source protocol, provide source host (source deployment URL), port 443 and the same trail name and username. Ensure “https:” and the ending “\” are not included in the “Source Host”.

GoldenGate console - target
GoldenGate console - target

Leave “Adanced Options” and “Filtering Options” as default and hit “Create and Run”.

GoldenGate console - target
GoldenGate console - target

Validate that the extracted initial load data has been replicated.

GoldenGate console - target

Task 7: Create (initial load) Replicat Process

Setup (Initial Load) Replicat on target’s GoldenGate Console. Navigate to “DB Connections” > “Checkpoint” to create a Checkpoint table. Provide a meaningful checkpoint table name and hit “Create”.

GoldenGate console - target
GoldenGate console - target

Navigate to “Replicats” > “+” to add a replicat. Keep the default settings and provide a meaningful process name.

GoldenGate console - target

Replicat Trail Name should be as declared in target’s target-initiated path. Select respective “Domain”, “Alias” and “Checkpoint Table”.

GoldenGate console - target

Provide respective mapping for table. Hit “Create and Run”.

GoldenGate console - target
GoldenGate console - target

Review in “Replicats” > “Statistics” to validate initial load data are replicated to target.

GoldenGate console - target

Task 8: Create (CDC) Extract Process

Create a distribution path for CDC extract and push the trail files from source to target deployment.

Navigate to source GoldenGate Console > “Extracts” > “+” to add Extracts. Select “Change Data Capture Extract” and provide a meaningful process name.

GoldenGate console - source

Select respective “Domain”, “Alias” and provide an “Extract Trail Name”. Keep the “Managed Options” setting as default.

GoldenGate console - source
GoldenGate console - source

Replace *.* with desired <schemaName>.<tablename> to be extracted. Hit “Create and Run.

GoldenGate console - source
GoldenGate console - source

Once it is running, navigate to “Distribution Service” > “Distribution Paths” > “+”. Provide a meaningful path name.

GoldenGate console - source

Select the “Source Extract” and “Trail Name” created in the previous step.

GoldenGate console - source

Select “wss” as the target protocol, provide target host (target deployment URL), port 443 and the same trail name and username. Ensure “https:” and the ending “\” are not included in the “Target Host”. Provide respective “Alias” to be used.

GoldenGate console - source

Leave the rest as default for “Advanced Options and “Filtering Options”, then hit “Create Path and Run”.

GoldenGate console - source
GoldenGate console - source

Distribution Paths will be reflected under target deployment console “Receiver Service”.

GoldenGate console - target

Task 9: Create (CDC) Replicat Process

Navigate to target deployment console > “Replicats” > “+”. Provide a meaningful process name for CDC Replication.

GoldenGate console - target

Use the same “Replicat Trail Name” as created previously. Select respective “Domain” and “Alias” and “Checkpoint Table”. Keep “Managed Options” as default.

GoldenGate console - target
GoldenGate console - target

Provide respective mapping for table, then hit “Create”.

GoldenGate console - target

Once initial load synchronization has completed, we can run the CDC replicat to enable real-time data replication between source and target database.

GoldenGate console - target

Task 10: Validate GoldenGate deployment

SQL Server data insertion - source

Observe that number of “Inserts” became 1 as we have added 1 row of data.

GoldenGate console - target

Perform 1 update in source SQL Server and validate them in target Autonomous Lakehouse.

SQL Server data update - source

Observe that number of “Updates” became 1 as we have updated 1 row of data.

GoldenGate console - target

Troubleshooting

If no data are being synchronized on the target GoldenGate deployment, ensure SQL Server Agent service is started.

SQL Server - troubleshoot

By the end of this walkthrough, you should have a working near real-time replication pipeline from Microsoft SQL Server into Autonomous Lakehouse using OCI GoldenGate Microservices, along with a simple approach to validate end-to-end data movement. From here, consider hardening the solution for production—review security and network controls, monitor lag and throughput, and implement error handling and retention—so your downstream analytics stay current and reliable.

Related Links

More Learning Resources

Explore other labs on docs.oracle.com/learn or access more free learning content on the Oracle Learning YouTube channel. Additionally, visit education.oracle.com/learning-explorer to become an Oracle Learning Explorer.

For product documentation, visit Oracle Help Center.