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.
| Feature | Skippr | OCI Data Integration |
|---|---|---|
| Deploy | Single Rust binary, your VPC or on-prem | Workspace in an OCI tenancy |
| Schema | In-stream evolution, sibling columns | Mapping in the flow. Rule-based schema evolution |
| Storage | Open Iceberg on Parquet you own | Object Storage, Oracle Database, lakes the operators write |
| CDC | Log-based; fails closed if the dest cannot honour | Incremental extract. Log CDC is GoldenGate |
| Query | skipprd query on Iceberg ∪ WAL; history in any Iceberg engine | Target after the task. No lake SQL in the workspace |
| Pricing | Free self-hosted engine | Workspace 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.
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 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.
