HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Migrating from Oracle to MySQL via MySQL workbench: Table list is empty

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
fromworkbenchemptymysqlmigratingvialistoracletable

Problem

MySQL workbench offers a migration tool that I'm using to migrate an Oracle database to MySQL.

I'm using the migration wizard to migrate the complete Oracle schema to MySQL. I used that for the migration wizard and a RDBMS source thru odbc to connect the oracle source.

Step 1 : Source is configured and tested

Step 3 : Introspection is OK

Step 4 : Table list is empty

Unfortunately, the object list is empty, so I can't get the next step.

A short test of the odbc driver through excel confirmed that the odbc is correctly configured and displays the table list.

mysql workbench 6.3

odbc driver oracle 11.2

java 1.8

Oracle database 10g

Solution

Like @bauerInHsv said, Oracle has a vested interest in providing minimal support for migrating off of its enterprise offering (Oracle) and onto its open-source RDBMS (MySQL).

As an alternative to MySQL Workbench, you could use etlalchemy.

It is an open-source Python tool, that lets you migrate between any 2 relational database with 4 lines of Python.

To install:

pip install etlalchemy
# On El Capitan:
#### pip install etlalchemy --ignore-installed


To run:

from etlalchemy import ETLAlchemySource, ETLAlchemyTarget

oracle_db_source = ETLAlchemySource("oracle+cx_oracle://username:password@hostname/SID")

mysql_db_target = ETLAlchemyTarget("mysql://username:password@hostname/db_name",
                                       drop_database=True)
mysql_db_target.addSource(oracle_db_source)
mysql_db_target.migrate()


This will handle the migration in the following order:

  • Migrating the Schema



  • Migrating the Data



  • Migrating the Indexes



  • Migration the Constraints



(P.S. I wrote this tool, so feel free to reach out if you find something broken.)

Code Snippets

from etlalchemy import ETLAlchemySource, ETLAlchemyTarget

oracle_db_source = ETLAlchemySource("oracle+cx_oracle://username:password@hostname/SID")

mysql_db_target = ETLAlchemyTarget("mysql://username:password@hostname/db_name",
                                       drop_database=True)
mysql_db_target.addSource(oracle_db_source)
mysql_db_target.migrate()

Context

StackExchange Database Administrators Q#114793, answer score: 3

Revisions (0)

No revisions yet.