Database licensing — especially Oracle and SQL Server — is among the costliest line items in IT, and per-vCPU pricing makes virtualization savings hard to capture. Open engines like PostgreSQL, MySQL, and MariaDB remove the license entirely; the work is conversion and validation, not the data movement itself.
The economics
Commercial databases license by the vCPUs of the server. Oracle applies a core factor and generally expects you to license every core a workload can run on, which limits virtualization savings unless you use approved hard partitioning. PostgreSQL/MySQL/MariaDB cut the license to zero; ongoing cost becomes infrastructure plus optional commercial support (EDB, Percona, Crunchy, MariaDB plc).
What converts cleanly — and what doesn’t
Tools like ora2pg, pgloader, and AWS SCT automate the mechanical majority: schema, indexes, constraints, sequences, and much stored-procedure logic. Plan engineering time for:
- Stored procedures / packages — complex PL/SQL or T-SQL needs rework.
- Datatype & semantics —
NUMBER/DATE, empty-string-vs-NULL,ROWNUM, identity/sequence patterns. - Application SQL — hints, vendor outer-join syntax,
DUAL, and DB-specific functions.
If a SQL Server rewrite is the blocker, Babelfish for Aurora PostgreSQL can accept T-SQL directly; for Oracle, EDB Postgres Advanced Server maximizes compatibility at the cost of a subscription.
A low-downtime flow
Assess → provision the target (primary + replicas) → convert and load the schema → migrate data via dump/restore for the rehearsal, then CDC replication to stay current → convert procedures and app SQL in parallel → validate with row counts, checksums, regression tests, and query-plan comparisons → cut over at zero replication lag, keeping the source recoverable.
Testing is the project
The depth of your parallel-run predicts cutover success. Replay representative workloads against both databases, compare results and plans, and only promote when the target meets documented correctness and performance criteria. NoSQL and analytics migrations follow the same shape — export, load, re-point, validate.
Open any source→target page for the pair-specific tooling (e.g. ora2pg/pgloader commands) and a TCO model sized on vCPUs.