Oracle GoldenGate alternative — GoldenGate vs Skippr
Oracle GoldenGate is redo CDC and replication. Extract reads the source transaction log, writes a trail file, and Replicat applies. You run it for high availability, zero-downtime migrate, unidirectional warehouse feed, or bidirectional / multimaster with conflict rules. Current software is 26ai on Microservices Architecture. Classic Architecture is de-supported in that line. OCI GoldenGate is the managed service: you pick an OCPU count (1 to 24), optionally auto-scale to three times that count, and pay the maximum OCPUs used in the hour, license-included or BYOL. Data Fabric (October 2026) is a new OCI offering for pipelines and data products on top of that service. Iceberg is not the core replicator. It ships in GoldenGate for Distributed Applications and Analytics (DAA) 23ai: an engineless Iceberg Replicat writes Iceberg v2 into object storage, or into Iceberg tables that Databricks, Snowflake, or BigQuery already manage. Catalogs listed in the Iceberg docs include Glue, Hadoop, Nessie, Polaris, and REST. Oracle's September 2026 price list puts core GoldenGate at 17,500 USD a processor or 350 USD a Named User Plus, licensed on capture and apply. DAA is 20,000 USD a processor or 400 USD a Named User Plus, counted on the source. First-year support is extra. GoldenGate Free is a Docker image: production is allowed on Oracle databases of 20 GB or less (CDB size includes every PDB), community forum instead of Oracle Support, and you cannot mix it with licensed GoldenGate.
Skippr is an open Streamhouse you run as one Rust binary. Write skippr.yml (or the same thing in Python), discover, sync. You query live state over Iceberg ∪ WAL, and the history is ordinary Iceberg in your bucket. No trail file. ELT into a warehouse is one path, not the product.
| Feature | Skippr | Oracle GoldenGate |
|---|---|---|
| Deploy | Single Rust binary, your VPC or on-prem | Microservices on VM, Kubernetes, or OCI GoldenGate |
| Schema | In-stream evolution, sibling columns | Source-driven apply. DDL support is a mapping choice |
| Storage | Open Iceberg on Parquet you own | Trail, then target. Iceberg is DAA, not core GoldenGate |
| CDC | Log-based; fails closed if the dest cannot honour | Redo / transaction-log Extract. Oracle, MySQL, Postgres, SQL Server, Db2, and others |
| Query | skipprd query on Iceberg ∪ WAL; history in any Iceberg engine | Target after Replicat. Stream Analytics is a separate deployment type |
| Pricing | Free self-hosted engine | Processor or NUP on both ends (core). DAA source-only. OCI is OCPU per hour. |
What Oracle GoldenGate is good at
Oracle redo with low source load. That is the product. Active-active across regions, endian or major-version hops, and Maximum Availability Architecture Platinum with Data Guard are why RAC shops still buy it as operations kit, not only as analytics ingest. Heterogeneous apply (MySQL, PostgreSQL, SQL Server, Kafka, Snowflake) is documented. If the job is "keep two Oracle databases writable and consistent," that is a real product.
Where the job is wider
GoldenGate is a replicator. It is not a Streamhouse. Core GoldenGate lands a trail, then a database or a bus. There is no Iceberg ∪ WAL in that path. There is no skipprd query on in-flight rows. Iceberg arrives when you buy DAA and stand up that Replicat.
License math is the ops. Core GoldenGate meters both ends. DAA meters the source at a higher list. ENABLE_GOLDENGATE_REPLICATION on an on-prem Oracle database can require a GoldenGate license even when a third-party tool reads via LogMiner. Auto-scale on OCI bills the peak OCPU in the hour, not the average. Free stops at 20 GB and will not talk to a licensed Extract.
Bidirectional is documented as harder than one-way: loops, conflicts, latency, and a unique key on every table. GoldenGate also will not capture Salesforce, Teradata, or TimesTen.
Skippr will not read Oracle redo. Skippr also will not be your failover pair. If the job is "Oracle log CDC into another Oracle, or into Kafka," GoldenGate is the narrower tool. If the job is live SQL on Iceberg you run, GoldenGate was never that.
Getting started
Install skipprd from the install guide, or pip install skippr. The three tabs write the same skippr.yml. Then discover, sync, and query.
skippr:
workspace: analytics
skipprd_el_storage_mode: local
pipelines:
orders:
data_source: data_sources.app_db
data_sink: data_sinks.lake
data_sources:
app_db:
Postgres:
host: db.internal
user: skippr_reader
password: ${APP_DB_PASSWORD}
database: app
tables: [orders, customers]
cdc_mode: snapshot_then_cdc
data_sinks:
lake:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1
schema_sink: schema_sinks.lake_schema
schema_sinks:
lake_schema:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1skipprd --workspace analytics --storage-mode local connect data-source postgres \
--pipeline orders \
--name app_db \
--host db.internal \
--user skippr_reader \
--password '${APP_DB_PASSWORD}' \
--database app \
--tables orders \
--tables customers \
--cdc-mode snapshot_then_cdc
skipprd connect data-sink athenaiceberg \
--pipeline orders \
--name lake \
--warehouse s3://my-iceberg-warehouse/ \
--glue-database-name analytics \
--athena-workgroup-name primary \
--athena-results-s3-bucket my-athena-results \
--region us-east-1
skipprd connect schema-sink athenaiceberg \
--pipeline orders \
--name lake_schemafrom skippr import (
Config,
DataSinkAthenaIceberg,
DataSourcePostgres,
DataSourcePostgresSourceCdcMode,
EnvRef,
LocalStorage,
Pipeline,
)
cfg = Config().workspace("analytics").storage(LocalStorage())
app_db = cfg.data_source(
"app_db",
DataSourcePostgres(
host="db.internal",
user="skippr_reader",
password=EnvRef("APP_DB_PASSWORD"),
database="app",
tables=["orders", "customers"],
cdc_mode=DataSourcePostgresSourceCdcMode.SNAPSHOTTHENCDC,
),
)
lake = cfg.data_sink(
"lake",
DataSinkAthenaIceberg(
warehouse="s3://my-iceberg-warehouse/",
glue_database_name="analytics",
athena_workgroup_name="primary",
athena_results_s3_bucket="my-athena-results",
region="us-east-1",
),
schema_sink="lake_schema",
)
cfg.pipeline("orders", Pipeline(data_source=app_db, data_sink=lake))
cfg.save("skippr.yml")export APP_DB_PASSWORD='your-postgres-password'
skipprd discover --pipeline orders
skipprd sync --pipeline orders --once
skipprd query "SELECT count(*) FROM analytics.orders"Which to choose
Choose GoldenGate if you need Oracle redo CDC, active-active, or a zero-downtime migrate, and apply after the trail is enough.
Choose Skippr if you want one binary, live SQL, and Iceberg files that stay yours. Skippr will not read Oracle redo.
Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.
