Skip to content

OCI Data Integration alternative — OCI Data Integration vs Skippr ​

OCI Data Integration is Oracle's serverless ETL/ELT in an OCI tenancy. You design data flows (join, aggregate, expression) and pipelines that orchestrate those tasks plus OCI Data Flow, Data Science, and Container Instances. Spark ETL scales the heavy copies. SQL pushdown (E-LT) uses the target database. Incremental load is a watermark column or a source/target compare, not a log tail. Oracle's own CDC product is GoldenGate. Billing is three meters: workspace hours, gigabytes processed per hour, and pipeline operator hours at 0.30 USD (first 30 execution hours a tenant-month are free). The public price list does not print the workspace and GB unit prices. This is not a Streamhouse. There is no Iceberg ∪ WAL.

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 workspace hour. ELT into a warehouse is one path, not the product.

FeatureSkipprOCI Data Integration
DeploySingle Rust binary, your VPC or on-premWorkspace in an OCI tenancy
SchemaIn-stream evolution, sibling columnsMapping in the flow. Rule-based schema evolution
StorageOpen Iceberg on Parquet you ownObject Storage, Oracle Database, lakes the operators write
CDCLog-based; fails closed if the dest cannot honourIncremental extract. Log CDC is GoldenGate
Queryskipprd query on Iceberg ∪ WAL; history in any Iceberg engineTarget after the task. No lake SQL in the workspace
PricingFree self-hosted engineWorkspace hours, GB processed/hour, pipeline hours at 0.30 USD.

What OCI Data Integration is good at ​

A scheduled Oracle-to-Autonomous or Object Storage load in the same tenancy, without standing up an ODI agent. That is the product. Event-triggered pipelines and Spark scale are why some teams leave a Studio repository. If the job is "this OCI batch into this lake or Autonomous DB," that is a real product.

Where the job is wider ​

OCI Data Integration is a serverless mapper. It is not a Streamhouse. There is no Iceberg ∪ WAL. There is no skipprd query on in-flight rows. Iceberg as a live CDC dest is GoldenGate for DAA, not this SKU. Data Transforms (a different Oracle data-load UI) can target Iceberg from SQL sources with Incremental Merge or Append.

Meter math is the ops. A workspace that stays open bills hours. GB processed per hour is a second line. Pipeline orchestration is a third. Skippr will not import an OCI data flow. Skippr also will not replace a GoldenGate extract. ODI on-prem is a separate page. GoldenGate is too.

If the job is "OCI scheduled ETL we already staff," Data Integration is the narrower tool. If the job is live SQL on Iceberg you run, Data Integration 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.

yaml
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-1
bash
skipprd --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_schema
python
from 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")
bash
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 OCI Data Integration if you want serverless ETL in an OCI tenancy, and the target after the task is enough.

Choose Skippr if you want one binary, live SQL, and Iceberg files that stay yours. Skippr will not run an OCI data flow.

Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.