D
+
C

Walk one legacy Oracle workflow through its full ~18-day Databricks migration lifecycle

A real Oracle PL/SQL stored proc + Informatica mapping is analyzed on disk. Cursor orchestrates Databricks MCP, Opus, Composer, Codex, and Unity Catalog (~40 min agent compute) — then sits in code review, runs a 2-week DLT shadow against Oracle, gets 3 stakeholder sign-offs, and cuts over in a CAB-approved window. Played back at warp speed. The incumbent GSI's 5-year, $22M plan becomes 18 months and $6.8M.

Click Run migration analysis to start the demo

Migrate this Informatica workflow

Oracle 19c · PL/SQL · CUSTOMER_RFM_SEGMENTATION → Databricks · Unity Catalog · DLT

214 LOC · 6 idioms flagged
1-- LEGACY: Oracle 19c · ACME_DW.customer_rfm_segmentation
2-- Idioms touched on migration day:
3-- · explicit cursor + FETCH loop
4-- · GLOBAL TEMPORARY TABLE
5-- · MERGE INTO ... USING
6-- · CONNECT BY PRIOR (recursive hierarchy)
7-- · NVL / DECODE / ROWNUM / TO_CHAR(date,'YYYYMM')
8
9CREATE GLOBAL TEMPORARY TABLE tmp_rfm_scores (
10 customer_id NUMBER(18), run_ym CHAR(6),
11 last_order_dt DATE, recency_days NUMBER(6),
12 order_count NUMBER(8), gross_sales NUMBER(18,2),
13 r_score NUMBER(1), f_score NUMBER(1),
14 m_score NUMBER(1), rfm_cell CHAR(3)
15) ON COMMIT PRESERVE ROWS;
16
17CURSOR c_customers IS
18 SELECT c.customer_id,
19 NVL(MAX(o.order_dt), DATE '1900-01-01'),
20 COUNT(o.order_id),
21 NVL(SUM(o.gross_amount), 0)
22 FROM acme_dw.customers c
23 LEFT JOIN acme_dw.orders o
24 ON o.customer_id = c.customer_id
25 AND o.order_dt >= ADD_MONTHS(p_run_date, -24)
26 WHERE c.status_cd IN ('A','H')
27 AND ROWNUM <= 5000000
28 GROUP BY c.customer_id
29 ORDER BY c.customer_id;
30
31OPEN c_customers;
32LOOP
33 FETCH c_customers INTO r_cust.customer_id, ...
34 EXIT WHEN c_customers%NOTFOUND;
35 -- stage into tmp_rfm_scores
36END LOOP;
37CLOSE c_customers;
38
39MERGE INTO acme_dw.mart_customer_rfm t
40USING ( SELECT customer_id, run_ym, rfm_cell,
41 DECODE(rfm_cell,'555','Champion','544','Loyal',
42 '344','Promising','155','Hibernating','Other')
43 FROM tmp_rfm_scores
44 WHERE run_ym = TO_CHAR(p_run_date,'YYYYMM') ) s
45ON (t.customer_id = s.customer_id AND t.run_ym = s.run_ym)
46WHEN MATCHED THEN UPDATE SET t.rfm_cell = s.rfm_cell, ...
47WHEN NOT MATCHED THEN INSERT (...) VALUES (...);
48
49-- Tier rollup over the customer_tier hierarchy.
50SELECT LPAD(' ', 2*(LEVEL-1)) || t.tier_code,
51 COUNT(DISTINCT r.customer_id), SUM(r.gross_sales)
52 FROM acme_dw.customer_tier t
53 LEFT JOIN acme_dw.mart_customer_rfm r ON r.tier_code = t.tier_code
54 START WITH t.parent_tier IS NULL
55CONNECT BY PRIOR t.tier_code = t.parent_tier;
cursor loopsMERGECONNECT BYROWNUMNVL/DECODEglobal temp tables

Reads the real stored proc + Informatica XML on disk — analysis latency is not simulated

For the Databricks AE

Why you play this demo: every quarter of migration compressed is a quarter of Databricks consumption earlier.

Pulled-forward ARR

At a $15M/yr committed-use target, compressing a 5-year migration to 18 months is worth ~$45M in consumption pulled forward per account.

Unblocked deals

Migration bill drops from $22M to $6.8M. The customer CFO can budget it; the AE can actually close.

Clean account, no GSI middleman

Customer's own team stays on the keyboard. Account stays clean for expansion — Genie, Unity Catalog, Mosaic AI, foundation models — without a SI tollbooth.

Defensive against Snowflake / BigQuery: customers who can migrate fast don't bake off. Cursor is the faster path.

Databricks consumption pulled forward · Oracle/Informatica TCO retired

What the Databricks AE takes to their prospect's CFO.

Migration bill

$22M over 5 years

$6.8M over 18 months

(incumbent GSI fixed bid)

−69%

Pulled-forward ARR

$45M+ · 42 months sooner

(at $15M/yr committed-use)

new

Annual run cost

$14.7M/yr on-prem

$3.9M/yr on Databricks

(Oracle + Informatica + DC retired)

−73%

Per-workflow calendar

~12 weeks (GSI)

~18 days (agent + reviews + parallel run + cutover)

(human review + 2-wk shadow + sign-off + CAB still happen)

−78%

Per-workflow engineering cost

$71,200 GSI fixed-bid

~$2,400 internal

(~40 min agent compute + ~6 hrs human review)

−97%

Portfolio throughput

~1 workflow / 2 weeks (GSI)

~12 in flight at any time · 18-month finish

(2 squads · same review/sign-off/CAB gates)

24× concurrency

DBU rates reference serverless SQL Warehouse Large at $0.70/DBU-hour (public list). Round up for SE-safe quoting.

Why a data-platform team trusts this motion

Guardrails, not guesswork.

Row-equivalence harness

Every migration PR is gated on `row delta = 0` and `monetary Σ delta = $0.00` against a 1% Oracle sample.

Unity Catalog lineage preserved

Bronze → silver → gold lineage registered before PR opens. No tables land in the wild without grants + owner.

Human approval gate

Agent proposes the migration, never merges. A data-platform reviewer ships the change.

No schema widening

Agent rejects its own patch if column types widen, columns drop, or natural keys shift. A migration note is required otherwise.

~40 min agent compute · 4 human checkpoints · 2-week parallel run · CAB-approved cutover.Cursor compresses the engineering — the change-management gates a regulated data platform requires still happen.