0.前言 

       最近公司要求把项目数据库从mysql换成Oracle,目前总算是快完成了,就写个帖子记录下遇到的问题。网上的教程五花八门,同时给一些也在寻找方法的人一些帮助,有什么问题可以在评论里讨论。使用sqldeveloper迁移表和数据比convert mysql to oracle好用多了!!!

代码中一些sql语句是肯定要改的(例如order by 语句,一些函数)。本文主要介绍数据库表结构迁移与数据迁移,毕竟生产环境在跑着,数据也肯定要一起迁移过来的。

1.数据库版本与工具版本

mysql版本随意,Oracle版本是11gR2,主要使用迁移工具是sqldeveloper-4.0.3.16.84-x64.  的用最新版的会报错,找了半天才找到这个版本不会报错而且oracle限制字段和表长度是32,他转化的时候如果超长会自动截取比convert 。

附上下载地址:sqldeveloper-4.0.3.16.84-x64

2.使用工具进行数据结构迁移与数据迁移

1.在Oracle数据库中创建移植资料档案库用户

资料档案库用户不是用来接收MySQL迁移数据的用户,而是进行数据迁移配置的用户。

create user migrater identified by migrater;--创建用户并设置密码
alter user WXORACLE account unlock;--解锁用户
grant dba to migrater;--赋予用户dba权限等
grant connect, resource to migrater;
grant create session to migrater;

2.在SQL Developer中新建Oracle连接

SQL Developer中创建Oracle的连接比较简单,如下图所示:

mysql表结构快速转word表格 mysql转oracle表结构_mysql

3、添加第三方JAR包(MySQL)并连接mysql
使用SQL Developer建立MySQL的连接,需要添加MySQL的驱动包,添加方法如下:

点击“工具-》首选项”

在首选项面板中选择左侧“数据库-》第三方JDBC驱动程序”,点击下方的添加条目按钮选择MySQL的驱动jar包。

 

mysql表结构快速转word表格 mysql转oracle表结构_sqldeveloper_02

然后添加mysql连接

mysql表结构快速转word表格 mysql转oracle表结构_sqldeveloper_03

5、关联移植资料档案库
执行迁移数据库之前需要关联移植资料档案库,操作如下: 

右键刚才添加的Oracle连接

mysql表结构快速转word表格 mysql转oracle表结构_切换数据库mysql到Oracle_04

6、显示成功之后移植MySQL数据库至Oracle数据库
在需要数据迁移的MySQL数据库连接上右键,选择“移植到Oracle…”菜单。 

mysql表结构快速转word表格 mysql转oracle表结构_mysql_05

mysql表结构快速转word表格 mysql转oracle表结构_切换数据库mysql到Oracle_06

 

mysql表结构快速转word表格 mysql转oracle表结构_切换数据库mysql到Oracle_07

mysql表结构快速转word表格 mysql转oracle表结构_mysql表结构快速转word表格_08

mysql表结构快速转word表格 mysql转oracle表结构_sqldeveloper_09

mysql表结构快速转word表格 mysql转oracle表结构_切换数据库mysql到Oracle_10

 

mysql表结构快速转word表格 mysql转oracle表结构_切换数据库mysql到Oracle_11

 

mysql表结构快速转word表格 mysql转oracle表结构_mysql迁移Oracle_12

mysql表结构快速转word表格 mysql转oracle表结构_mysql迁移Oracle_13

mysql表结构快速转word表格 mysql转oracle表结构_sqldeveloper_14

mysql表结构快速转word表格 mysql转oracle表结构_mysql迁移Oracle_15

完成后Oracle数据库会生成一个和mysql数据名一样的用户

如果你mysql数据名叫 mysqltest   他就会给你生成一个mysqltest用户

给该用户设置密码并授权

alter user mysqltest identified by 123456;
alter user mysqltest account unlock;
grant dba to mysqltest;
grant connect, resource to mysqltest;
grant create session to mysqltest;
commit;

最后使用mysqltest/123456登录Oracle数据库,就可以发现所有表和数据都有了

mysql表结构快速转word表格 mysql转oracle表结构_mysql迁移Oracle_16

至此数据迁移完成