mysql迁移到oracle 详解 | 您所在的位置:网站首页 › oracle数据迁移到oracle › mysql迁移到oracle 详解 |
背景:
更换数据库,需要将Mysql数据库表框架迁移到oracle数据库中. 数据库版本: Mysql:5.7.1 Oracle:12.2.0 注:oracle须使用12.2以上版本,低版本不支持长表名 工具:
推荐使用Navicat,PLSQL,PLSQL作为oracle语句的编译工具,两者配合使用
备注:PLSQL安装和配置请参考 https://blog.csdn.net/qq_40709468/article/details/81122028 迁移过程: 思路: 创建相应表空间和用户用Navicat将表结构迁移到oracle数据库,将oracle不支持的表类型进行转换查看编码,导出原始脚本,删除脚本里不必要的信息特殊字段处理脚本增加索引,序列,触发器,视图,存储过程和函数所有的创建语句在执行前做判断脚本合并脚本调试 过程:过程中遇到一些典型的问题拿出来讲一下 检查Mysql的数据库,确保是完整一套数据库,如图所示,该数据库中包含了MES系统用的所有数据库
2. 对应mysql里的数据库,使用PLSQL创建表空间和用户,并赋予用户权限,这里我把mysql上的每个数据库作为一个表空间,然后给对应的用户。对应关系如下:
Mysql:库 cloudbackend oracle: 表空间:cloudbackend cloud_mes_device cloud_mes_device … … 3. 使用navicat连接oracle,将mysql里的表结构迁移到oracle对应下的表空间,具体过程跟sqlserver表迁移类似,不多赘述。 4. 迁移成功可以看到表的原始结构语句
将其语句转到sql文件里,并打开,删除“”和cloudbackend.并且将数据类型转换(需要转换的要转换),可以参考另一份文档“mysql与oracle数据类型转换” 5. 在使用PLSQL执行建表脚本调试时遇到特殊字段,如group, index等,如图
这里我把这种特殊字段做了“”处理,调试通过,值得注意的是,在编译时如用到这种特殊字段,需加“”去操作。 建表的脚本调试时会碰到如下的错误:
说明脚本里有DEFRRED,将其改为immediate,执行通过。调试需要耐心,表数据庞大,每张表在改动脚本的时候都要做一次调试 6. 索引的创建需要对应表空间,不多赘述。在处理自增时耗费的时间比较久,在实现id字段自增的过程中,mysql和oracle是完全不同的。举例说明: Mysql实现id自增 create table test ( id int not null auto_increment, name,varchar, primary key (id) ); 只要主键添加auto_increment,即可实现自增 Oracle实现自增方法: i:创建序列 ii: 创建触发器 这两者协同实现表id的自增。 建表时添加判断的函数目的是为了,多次执行可以覆盖前面的创建。这里判断主要使用在了表,索引,序列,其他的创建,比如创建触发器等可以用replace代替判断。
8.为了方便调试开始时最好每一项作为一个单独脚本调试,最后将已调试好的脚本合并到一个脚本中再做一个调试,注意语句中可能会用到/去做语句连接,调试过程中会遇到大量的错误,需要耐心调查和解决。 |
CopyRight 2018-2019 实验室设备网 版权所有 |