Migration wizard (data/schema migration)
You are migrating data/schema. Is it homogeneous or heterogeneous, and what is your downtime tolerance? Plan it step by step: assess → migrate → verify. Rehearse the cutover here first.
What are you migrating from and to?
Homogeneous: the same database engine (e.g. Oracle 19 → Oracle 23, or PostgreSQL to another server). Heterogeneous: a different engine (e.g. Oracle → PostgreSQL, MySQL → SQL Server). Heterogeneous migrations require much more compatibility work (data types, functions, PL/SQL).
- Same engine, new server/version (homogeneous)
- To a different engine (heterogeneous)
- I am in the planning phase; how should I approach it?
What is your downtime tolerance?
This determines the migration method. If there is a maintenance window, the simplest path is dump/restore. If near-zero downtime is required, you load the initial data, keep it in sync with continuous replication (CDC) and perform a short cutover.
- There is a maintenance window (downtime is acceptable)
- Near-zero downtime is required
Have you assessed schema and type compatibility?
In a heterogeneous migration, the real work is not copying the data but resolving the differences: data types (VARCHAR2↔TEXT), functions (NVL↔COALESCE), auto-increment values, PL/SQL ↔ PL/pgSQL, removed/different features.
- I have mapped the schema/type differences
- I have not assessed them yet
Assess compatibility first
Before migrating, map the differences between source and target; if this step is skipped, the migration stalls halfway.
Offline migration (dump / restore)
The simplest and most reliable homogeneous method: take a consistent backup, load it into the target, verify, switch over.
Minimal downtime (CDC / replication)
Load the initial data, then keep the target in sync with the source via continuous replication; downtime occurs only during the short cutover.
Heterogeneous migration (to a different engine)
Convert the schema, move the data, adapt the logic, verify. Proceed in phases; do not migrate everything in one shot.