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的连接比较简单,如下图所示:
3、添加第三方JAR包(MySQL)并连接mysql
使用SQL Developer建立MySQL的连接,需要添加MySQL的驱动包,添加方法如下:
点击“工具-》首选项”
在首选项面板中选择左侧“数据库-》第三方JDBC驱动程序”,点击下方的添加条目按钮选择MySQL的驱动jar包。
然后添加mysql连接
5、关联移植资料档案库
执行迁移数据库之前需要关联移植资料档案库,操作如下:
右键刚才添加的Oracle连接
6、显示成功之后移植MySQL数据库至Oracle数据库
在需要数据迁移的MySQL数据库连接上右键,选择“移植到Oracle…”菜单。
完成后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数据库,就可以发现所有表和数据都有了
至此数据迁移完成