MySQL
Oracle

MySQL to Oracle Converter

Tables, keys, and rows into Oracle Database, with identity columns and a fast bulk load - once, or on a schedule while you cut over.

Version
5.4.0
Release Date
Oct. 25, 2026
Size
74.2 MB
Platform
Windows 10 or later

Rather not run it yourself?

Let us do the migration →

Move a MySQL database into Oracle without writing the Oracle schema by hand. DBConvert proposes an Oracle type for every column, creates the tables, keys, and indexes in the schema you pick, and loads the rows.

  • Reads MySQL, MariaDB, Amazon RDS or Aurora MySQL, Azure Database for MySQL, or Google Cloud SQL for MySQL.
  • Writes to Oracle Database 11.2 and later. The Oracle client ships with the application.
  • Runs on Windows as a desktop application.
  • The same download converts Oracle back into MySQL.

Built for loading into Oracle

Fast bulk load

A table the run creates is loaded with Oracle's direct path when its column types allow it, several threads at once, and its indexes are built once at the end.

Bad rows named, not lost

A row Oracle refuses is skipped, and the first ten are named by key in the log. The rest of the table still arrives, each row once.

Existing tables

Load into tables you created yourself. The rows are appended, and a table already in Oracle is used under its own name.

Convert once, or synchronize during the cutover

Both modes are part of the same DBConvert application.

One-time conversion

Create the Oracle schema and load the selected tables. Use a row filter when only part of a table belongs in Oracle, and save the job to repeat the test load.

Scheduled synchronization

Keep MySQL in use while Oracle is tested. Only changed rows move, in one direction or in both, and the job runs from Task Scheduler with --run-job.

How MySQL types map to Oracle

These are the defaults. Every target name and type is editable in the review before the run.

In MySQL DBConvert default in Oracle What needs attention
AUTO_INCREMENT On Oracle 12c and later, an identity column, GENERATED BY DEFAULT, whose next value starts after the copied keys. On 11g the key stays a plain NUMBER. None: new rows inserted after the load get new keys.
DEFAULT CURRENT_TIMESTAMP DEFAULT SYSTIMESTAMP. None.
DECIMAL, integer types, BOOL NUMBER, keeping the precision and scale of a DECIMAL. A boolean becomes a 0 or 1 number.
FLOAT, DOUBLE BINARY_FLOAT and BINARY_DOUBLE. None.
DATETIME, DATE, TIME DATE. TIMESTAMP stays TIMESTAMP. An Oracle DATE keeps whole seconds; choose TIMESTAMP for fractions. Oracle has no time-of-day type, so a TIME value is stored as a DATE.
VARCHAR(n) VARCHAR2(n CHAR), counted in characters, so non-Latin text fits. Over 4,000 characters, CLOB. Oracle still caps VARCHAR2 at 4,000 bytes. A longer value is refused and its row named.
TEXT, MEDIUMTEXT, LONGTEXT TEXT becomes VARCHAR2(4000); the larger two become CLOB. Switch a TEXT column to CLOB in the review when it holds longer values.
Empty strings Loaded. An empty string bound for a NOT NULL column is written as a single NUL character so the row still loads. Oracle treats an empty string as NULL; check queries that compare with ''.
Lower-case names Created in Oracle's upper case, so queries work without quotes. Names longer than Oracle allows (30 characters before 12.2) are flagged before the run.

Stored routines need a separate pass

The migration covers tables, their columns, indexes, and foreign keys. MySQL procedures, functions, triggers, and views stay in the source and are rewritten in PL/SQL by hand.

An Oracle connection that requires an SSH tunnel or TLS is refused rather than opened unprotected. For Oracle-side errors, see the Oracle troubleshooting notes.

Supported versions and services

MySQL

  • MySQL 5.x, 8.x; MariaDB; Percona Server
  • Amazon RDS / Aurora MySQL, Azure Database for MySQL, Google Cloud SQL

Oracle

  • Oracle Database 11.2 and later
  • Oracle client included in the installer

How to migrate MySQL to Oracle

1

Setup: connect MySQL and Oracle

Pick Convert or Sync, then choose the source and destination connections side by side on one screen. A connection is saved once and reused by every job.

The Setup step in DBConvert: the mode, the MySQL source and Oracle destination side by side, and the job name

Sync keeps an existing Oracle database up to date with MySQL: each run carries only the inserts, updates and deletes since the last one.

The Setup step in Sync mode for MySQL to Oracle: how changes are detected and the direction

MySQL source

Use the MySQL connection guide for local MySQL or MariaDB, or read from Amazon RDS / Aurora for MySQL, Azure Database for MySQL, or Google Cloud SQL for MySQL.

Oracle target

Enter the host, port, and service name, choose Connect as, and pick the target schema. The Oracle client ships with DBConvert. See Oracle connection settings.

2

Tables & mapping: see every Oracle type before a row moves

Pick the tables, then open one: each MySQL column shows the Oracle type it becomes. Change a type or a name in place; the line at the bottom names anything that would fail.

Tables and mapping for MySQL to Oracle: the table list and one table's columns with their Oracle types
3

Execution: start it, and the job is saved

Review what the run will do, start it, and read the log as it goes. The job stays in the list to run again or put on a schedule.

A finished MySQL to Oracle conversion: the summary and the operation log

Every option, in the guide

Naming rules, table options, row filters, scheduling and the command line work the same for every database pair, so they live in one place.

Move MySQL data into Oracle

Download the current build and run the first job against your own database.

Windows Windows 10 or later · 74.2 MB