Sumeta — the company behind Bridge
Engineering

Oracle to Snowflake in under 60 seconds: redo logs, XStream, and the five things that break

Sub-minute Oracle to Snowflake is achievable. What is harder is keeping it sub-minute for a month. This post breaks down the latency budget and the five failure modes that decide whether you do.

Engineering · 2026-11-03 · Sumeta engineering

End-to-end latency is capture lag plus load latency, not one number. Oracle capture reads redo through LogMiner or XStream; Snowflake ingest runs through Snowpipe Streaming or staged COPY. Both legs have to be inside the budget.

40–60s
P95 end-to-end in typical deployments
2
Capture paths out of Oracle
2
Load paths into Snowflake
5
Failure modes that break the budget

The latency budget

A budget, not a benchmark; each leg must be measured separately.
LegTypical contributionDominated by
Redo miningSecondsLog switch frequency and mining window
Change transportSub-second to secondsNetwork and batching
TransformationSub-secondWhether it runs in-stream or in a separate tier
Snowflake ingestSeconds to tens of secondsStreaming vs staged COPY; warehouse size
Commit acknowledgementSecondsOffset commit discipline

A separate transformation tier adds a hop whose latency grows with volume, and a scheduler adds a polling interval on top. Doing capture, transform and load in one job removes both additions — which is why the architecture, not the tuning, sets the floor.

Two capture paths

Choose by licensing and DBA preference as much as latency.
PathMechanismLicensing noteLatency
LogMinerReads redo and archive logs with a dictionaryNo additional Oracle option requiredSeconds, bounded by log switch
XStreamOracle logical change stream APIXStream licensing appliesSeconds, cleaner stream

The five things that break

  1. DDL. A new column or widened type changes the row image; without schema evolution in the same window the pipeline stalls or drops the field.
  2. Unsupported types. High-precision NUMBER, TIMESTAMP WITH TIME ZONE and intervals map differently in Snowflake unless mapped explicitly.
  3. LOBs. BLOB and CLOB capture amplifies log volume and breaks change-set size assumptions.
  4. Commit ordering. Parallel mining and multi-threaded loading can reorder rows for the same key, so the target reflects a stale update.
  5. Target backpressure. Snowflake throttling without upstream backpressure lets the offset fall behind and recovery cost grow.

Four of these five appear in the first week of a real migration. The fifth — commit ordering — appears under load, which is why a short POC can pass while production fails.

A verification plan

Five tests that cover the five failures.
TestDurationPass condition
Steady-state capture24 hoursP95 lag inside budget; offset stable
DDL change1 changePipeline evolves or blocks deliberately, no data loss
LOB table1 tableChange set within size limits; no truncation
Target throttle1 hourBackpressure applied; no unbounded offset growth
Recovery30-minute outageResume from offset; zero duplicates at the key level

Replay production redo

Run the verification plan against a copy of your Oracle source before you commit.