Oracle Database — Migration Economics — Buyer-Side Model

Oracle to PostgreSQL Migration: TCO Model and Licensing Arithmetic that Stand Up to Board Scrutiny

Most Oracle to PostgreSQL migration TCO models are written by the destination vendor and read like marketing. They understate refactor cost, ignore Oracle's audit exposure during the cutover window, and exclude the cost of running two stacks for the eighteen months it takes to drain a non-trivial PL/SQL estate. This article builds the buyer-side model — the arithmetic Oracle's account team will be shown when you sit down to challenge the next renewal. Every line is sourced from real engagements: 600+ Oracle programmes, $1.8B in negotiated spend, and the specific failure modes that have eaten 30 percent of every credible PostgreSQL migration that did not start with forensic licence and refactor counts. The model is also the lever. A costed, evidence-based Oracle to PostgreSQL migration plan in a renewal meeting moves discount authority from the local sales rep into the deal desk, where 50 to 70 percent off list becomes negotiable. Without it, you push back with nothing in your hand.

Published 27 April 2026 18 min read Tags: Oracle Database · PostgreSQL · Migration TCO
Former Oracle insiders25+ years600+ engagements$1.8B advised38% avg cost reduction100% buyer-side
Cost my PostgreSQL exit → License Optimisation

Why the Oracle to PostgreSQL migration TCO model is the lever

The Oracle to PostgreSQL migration TCO model is not a finance exercise. It is a negotiation artefact. Oracle's renewal discount authority is tiered, and the lever that moves the customer out of the local rep's tier and into the deal-desk tier is a credible, costed exit plan. The model is the credibility. A buyer-side migration TCO that contains a forensic Oracle entitlement baseline, a workload-by-workload refactor estimate, a named third-party support contract for the residual Oracle footprint, and a sequenced cutover schedule changes the conversation. Oracle's account team is paid against renewal retention; the deal desk is paid against attach rate and net new bookings. A migration threat that the deal desk believes will land routes pricing authority sideways and the discount stack opens by 30 to 40 percentage points.

Without the model, the customer's complaint about Oracle's renewal pricing reads as a position, not a threat. We have sat on both sides of this table. As former Oracle insiders, we know precisely which migration evidence the Oracle deal desk treats as credible and which evidence it discounts to zero. A whiteboarded plan from a procurement workshop is discounted. A TCO model with line-item Oracle entitlement counts pulled from DBA_FEATURE_USAGE_STATISTICS, a refactor estimate produced by Ora2Pg or AWS SCT runs against the actual schemas, and a board-approved budget number is treated as the start of an exit. The model is also the buyer's protection against a runaway migration: most PostgreSQL exits that have failed in the last five years failed because the refactor estimate was generated by the destination vendor's marketing rather than against the customer's actual PL/SQL line count. See Oracle database licensing guide for the underlying entitlement framework you have to baseline first.

The buyer-side Oracle to PostgreSQL migration TCO model has six components. Every one of them is missing from the typical vendor calculator.

The six components Oracle's deal desk recognises as credible

  • Forensic Oracle entitlement baseline — Processor, NUP, options, packs, USMM output, support number. Not aggregated. Per CSI, per workload.
  • Workload-by-workload refactor cost — Ora2Pg / AWS SCT scored against the actual schema with manual rewrite budget for the unconvertible tail.
  • Dual-run cost — Eighteen months of running both stacks for any non-trivial estate. Most models forget this.
  • Residual Oracle footprint — The workloads that will not migrate. Third-party support contract priced, indemnification language reviewed.
  • Audit defence reserve — Oracle LMS opens an audit on roughly 1 in 3 customers who issue an RFP for PostgreSQL displacement. Reserve for it.
  • Sequenced exit schedule — Which workload cuts over in which quarter, with named team, named partner, and budget tranche.

The full cost stack to capture on the Oracle side

The Oracle-side cost stack is wider than the licence cost. Every line in this list is real spend that goes to zero (or near zero) once the workload is off Oracle Database. The number Oracle's account team will quote is the licence-and-support line. The number to negotiate against is the full stack.

Cost lineDriverTypical value (5-year)
Oracle Database Enterprise Edition$47,500 / processor list × core count × core factor$760K on 16 procs (list)
Database Options (Partitioning, Compression, Diagnostics, Tuning)$11,500–$23,000 / processor / option$280K–$640K on 16 procs
Annual support (22% of net licence)Recurring, 8% uplift cap per year~$229K / year on a $1.04M EE+options stack
Active Data Guard / RAC / Multitenant where used$23,000 / $23,000 / $17,500 per processor$370K–$1.06M on 16 procs
Engineered system maintenance (Exadata)Hardware support, ASR, OS support$180K–$400K / year per quarter rack
Oracle-only operational labourDBA team, Real Application Testing licences, AWR / ADDM tuning$320K–$600K / year for 2–3 senior DBAs
Audit reserveAverage back-licence claim on LMS audit$400K–$2.1M one-time

Some of these lines transfer to the PostgreSQL side, but at a fraction of the per-unit cost. Operational labour for example does not go to zero — PostgreSQL operations is a real cost line — but the per-database labour cost drops because the open-source operational model removes vendor-driven licensing risk from the DBA's quarterly cycle. The clean way to read the stack is: any line that exists because Oracle is the database goes to zero, any line that exists because a relational database is running stays but at PostgreSQL economics. The audit reserve line is the one most CFOs miss. The forensic baseline section of our Oracle audit guide covers the back-licence claim numbers that drive the reserve.

Trap to avoid: Oracle's renewal pricing team will compare your migration TCO against the Oracle licence-only line, not the full stack. The buyer-side model has to present the stack at every reading or the comparison drifts back to Oracle's framing.

Buyer-side migration TCO build

Independent, evidence-based Oracle to PostgreSQL TCO model. Forensic entitlement baseline, refactor scoring, audit reserve sizing. Fixed-fee, ten-day turnaround.

Cost my PostgreSQL exit →

PostgreSQL operating cost the model has to load

The PostgreSQL side of the model is where vendor calculators lie hardest. They assume PostgreSQL is free, full stop. PostgreSQL the binary is free. PostgreSQL the operational platform is not. The buyer-side Oracle to PostgreSQL migration TCO model has to load the real operating cost honestly, because that number — not the Oracle saving — is what survives the CFO review and the second-year board readout.

The PostgreSQL operating cost stack on a managed service (RDS, Aurora Postgres, Azure Database for PostgreSQL, Google Cloud SQL) splits into compute, storage, IOPS, backup retention, replication, and the operational tooling Oracle bundled for free that now has to be bought separately. The on-premises self-managed PostgreSQL stack is cheaper in cloud-bill terms but more expensive in operational headcount terms. For most enterprise migrations the managed-service path produces a defensible saving inside thirty months. Self-managed produces a larger saving but requires PostgreSQL operational maturity the team usually has to hire for. Buyers should also benchmark the cross-engine alternatives in our Oracle Database vs PostgreSQL comparison and our Oracle Database vs Google AlloyDB comparison. See Oracle vs PostgreSQL replication licensing for the replication-side line items that often get missed.

PostgreSQL operating cost lines that the model must include

  • Managed-service compute — vCPU + memory, on-demand or reserved-instance pricing
  • Storage and IOPS — Provisioned IOPS for OLTP, throughput-optimised for analytics
  • Backup and PITR retention — 7-day, 14-day, 35-day costs differ materially
  • Read replicas and HA pair — Multi-AZ doubles compute; cross-region adds egress
  • Performance monitoring — pganalyze, Datadog DBM, AWS Performance Insights tier
  • Logical replication / CDC tooling — Debezium, AWS DMS for the cutover window
  • PostgreSQL DBA uplift — Senior PostgreSQL DBAs are scarce; typical $190K–$260K loaded
  • Vendor support contract — EDB, Crunchy, 2ndQuadrant for enterprise SLA on self-managed

The benchmark we use against client estates is that a managed PostgreSQL workload of equivalent throughput to an Oracle Enterprise Edition workload runs at 18 to 32 percent of the Oracle total cost in steady state. That number includes operational labour, monitoring, support, and reserved-instance pricing — not just the database engine cost. The variance is driven mostly by storage IOPS profile and replication topology. Workloads with heavy partitioning behaviour and Multi-AZ active-active requirements push the higher end. Read-heavy reporting workloads sit at the lower end.

PL/SQL refactor — the line that breaks most models

The PL/SQL refactor estimate is where buyer-side and vendor-side models diverge by a factor of two to four. Vendor migration tooling — Ora2Pg, AWS Schema Conversion Tool, EnterpriseDB Migration Toolkit — converts roughly 60 to 80 percent of straight PL/SQL automatically. The marketing copy stops there. The remaining 20 to 40 percent is the tail. The tail contains the patterns PostgreSQL does not natively support and that require manual rewrite or architectural change. The tail is what destroys a migration's economics if it is sized from a marketing slide rather than a counted estate.

We score every PL/SQL refactor against the actual code base. The scoring framework reflects the patterns we see eat budget at the back end of migrations.

PatternTool conversion rateManual refactor cost
Simple stored procedure / function~95%$25–60 per converted procedure
Package with state and session memory~50%$300–800 per package
BULK COLLECT INTO nested tables~30%$200–500 per occurrence
Autonomous transactions~10%$600–1,500 per occurrence (architectural change)
Hierarchical CONNECT BY with PRIOR~40%$150–400 per query (rewrite as recursive CTE)
Database links to other Oracle databases~20%$1,200–4,000 per link (FDW or ETL replacement)
Materialised view with FAST refresh~25%$400–900 per MV (rewrite refresh logic)
Advanced Queueing (AQ)~5%$8,000–25,000 per queue (Kafka / RabbitMQ replacement)
Oracle Text / Spatial / XML DB~15%$3,000–15,000 per feature (extension swap or rebuild)
Oracle-specific JDBC behaviours / OCI~70%$50–200 per connection-pool change

A 2 million line PL/SQL estate with a typical Oracle EBS-style mix produces between $1.5M and $3M of manual refactor cost in the tail alone, on top of the licensed tooling. Smaller estates can convert near-totally with light manual effort, but the manual lines compound: an autonomous transaction inside a hierarchical query that drives a materialised view refresh is not 1 + 1 + 1, it is a substantial architectural redesign. The buyer-side TCO model has to challenge the refactor estimate forensically before it goes to board. We push back on every vendor estimate where the tail is under 15 percent — that figure means the tool was run against a stripped schema rather than the production code base. For estates where the PL/SQL footprint sits inside Oracle E-Business Suite specifically, the database displacement decision usually runs alongside the application displacement decision; see the Oracle EBS to SAP S/4HANA migration economics framework for the application-side numbers.

Forensic PL/SQL refactor scoring

We run Ora2Pg and AWS SCT against your actual PL/SQL estate, score the unconvertible tail line by line, and produce a defensible refactor budget. Buyer-side numbers only.

Brief us on the renewal →

Anonymised case: 16-processor EE workload, five-year model

The case below is anonymised from one of our 2025 engagements. A North American insurer running a customer policy management system on Oracle Enterprise Edition with Partitioning, Advanced Compression, Diagnostics Pack and Tuning Pack. Sixteen Processor licences, $1.04M net licence, $229K annual support, growing at 8 percent per year. They were facing a 41 percent uplift at renewal and engaged us to build the Oracle to PostgreSQL migration TCO model that the board would approve as the credible threat. The output of the model is below.

Cost line (5-year, USD)Stay on OracleMigrate to PostgreSQL
Oracle licence + options (net licence baseline)$1,040,000 (sunk)$1,040,000 (sunk, written off)
Oracle support (5 years, 8% annual uplift)$1,344,000$420,000 (terminated month 18)
Oracle DBA labour (2.5 FTE)$1,950,000$650,000 (residual + transition)
Audit reserve$0 modelled$280,000 (LMS audit during migration)
PostgreSQL managed-service compute / storage / IO$0$680,000
PostgreSQL DBA labour (2.0 FTE blended)$0$1,560,000
Refactor — tooling + manual PL/SQL tail$0$1,820,000
Dual-run during 18-month cutover$0$540,000
Third-party support for residual Oracle workloads$0$160,000
5-year total$4,334,000$7,150,000

At first reading the migration looks more expensive. It usually does on the five-year horizon, because refactor cost is front-loaded and dual-run is concentrated in the middle of the window. The migration becomes cheaper than stay-on-Oracle in years six and seven, and dramatically cheaper in year eight onward because annual support uplift compounds out indefinitely on the Oracle side. The reason to build the model is not to prove the migration is cheaper in year five — it usually is not. The reason is to make the migration credible. We took this exact model to the renewal table on the client's behalf and Oracle's deal desk authorised a 62 percent discount off renewal list, a 5-year price hold, and audit suspension for the contract term. The migration did not run. The model paid for the renewal saving more than ten times over. See the Fortune 500 bank EA restructure case for a related pattern.

The point of the model: A credible exit forces Oracle to defend its install base with discount. The migration does not have to run for the model to pay back.

Renegotiation redlines a credible exit unlocks

Once the Oracle to PostgreSQL migration TCO model is on the table, the renegotiation has access to redline language that the deal desk will not normally entertain. The clauses below come from engagements where the migration TCO model was the lever and the deal moved from a 20 percent ceiling to a 50 to 70 percent floor. Every clause below has been signed by Oracle within the last three calendar years on programmes where the threat package was credible.

Redline clauses unlocked by a credible PostgreSQL exit

  • Multi-year support cap — Hold annual uplift at 0 percent for the contract term (default is 4 to 8 percent compounding).
  • Audit suspension — No LMS audit for the duration of the renewal term, written into the ordering document.
  • Right to drop options — Convert Partitioning, Diagnostics, Tuning to consumption metric or drop entirely with no recapture of historic support.
  • Termination for convenience — Reduce processor count by 30 percent at any anniversary with twelve months' notice; defend against the standard non-reducibility clause.
  • BYOL portability — Carry the entitlement to OCI or AWS without re-licensing fee or LMS reconciliation.
  • NUP convertibility — Convert Named User Plus to Processor on remaining workloads at the original discount stack.

The redlines do not appear in a renewal conversation that starts with the customer asking for a better price. They appear in a conversation that opens with a TCO model, a migration partner letter, a budget approval memo, and a sequence chart. Oracle's account team is trained to read the package and route it. Without it, the same conversation produces a 12 to 18 percent discount on the renewal and no structural protection. With it, the conversation produces what the model is built to produce. For ULA exit programmes the same logic applies — see our Oracle ULA guide and the ULA Advisory service for how the model integrates into a ULA certification.

Confidential renewal briefing

Facing Oracle renewal in the next 6–12 months? Independent, buyer-side TCO model + redline package + audit-defence reserve in ten business days.

Schedule briefing →

Frequently asked questions

How accurate is a five-year Oracle to PostgreSQL TCO model?

A defensible model is accurate to within 10 to 15 percent at the workload level if it is built from actual DBA_FEATURE_USAGE_STATISTICS, real PL/SQL line counts, and tool-assisted refactor estimates. Generic vendor TCO calculators understate refactor cost by 30 to 50 percent because they assume schema-only conversion. The buyer-side model has to load every Oracle-specific construct: PL/SQL packages, hierarchical queries, MERGE on multi-target tables, materialised view refresh logic, AQ, and the Oracle-specific JDBC behaviours.

What is the realistic licence saving from migrating an Oracle Enterprise Edition workload to PostgreSQL?

For a 16-processor Enterprise Edition workload with Partitioning, Advanced Compression, Diagnostics and Tuning, the avoided Oracle licence and option footprint is roughly $1.04M at list and around 22 percent annual support, which is roughly $229K per year terminated. PostgreSQL has zero licence cost. Operational cost lands at roughly $180K to $260K per year for managed services plus team uplift, so the steady-state save is in the $1.5M to $1.9M range across five years on that workload alone.

Does Oracle ever match a credible PostgreSQL migration threat?

Yes. When the threat package contains a costed PostgreSQL TCO model, a named migration partner, a board-approved budget, and a sequenced exit plan, Oracle account executives have authority to discount up to 70 percent off renewal pricing to defend the install base. Without the full threat package the discount cap holds at 20 to 30 percent. The model is the lever.

What is the biggest hidden cost in an Oracle to PostgreSQL migration?

PL/SQL to PL/pgSQL refactor is the single largest hidden cost line. Tools convert roughly 60 to 80 percent of straight PL/SQL automatically. The remaining 20 to 40 percent contains BULK COLLECT INTO nested tables, autonomous transactions, hierarchical CONNECT BY queries with PRIOR, and packaged session state, all of which require manual rewrite. On a 2 million line PL/SQL estate that hidden tail runs $1.5M to $3M in refactor cost.

Should I terminate Oracle support before or after the PostgreSQL migration completes?

Terminate Oracle support only after the cutover workload has run a full quarter in PostgreSQL production and an indemnified third-party support contract is in place for the remaining Oracle workloads. Premature termination removes the option to apply a security patch on an Oracle workload still in production and creates audit exposure with no easy remediation path. Read the Support Reduction service for the termination sequence we use to protect the residual estate. The Oracle to PostgreSQL migration TCO model has to schedule the termination explicitly, not assume it.

Free Briefing

Oracle Licensing Brief

Twice a month. Oracle pricing moves, audit-defence tactics, migration economics, ULA exit playbooks. Written by former Oracle insiders, never marketing.

No spam. Unsubscribe any time. Independent — not affiliated with Oracle Corporation.