Oracle向Mysql迁移方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle向Mysql迁移方案

一、可自动迁移部分;

1、表

这个部分的移植是最容易用工具实现的部分,因为很多MySQL的图形管理工具都自带这样的移植工具,比如SQL Yog,MySQL Administrator等。但是,这些工具的移植能力各有不同,对字段类型转换﹑字符集等问题都有自己的处理方式,使用时请注意。

笔者使用“SQL Yog Migration Toolkit”工具按提示步骤移植后,表的主要结构和数据将成功移植,主要包括表的字段类型(经过映射转换,比如number会转换为int,Varchar2会转换为Varchar,date转换为datetime等,请小心处理日期字段的默认值等),表的主键,表的索引(Oracle的位图索引会被转成BTree索引,另外表和字段的注释会丢失)等信息。

注意的是,Oracle的自增字段的处理。大家知道,Oracle通常使用序列sequence 配合触发器实现自增字段,但是MySQL和SQL Server等一样,不提供序列,而直接提供字段自增属性。所以,请把Oracle里面的自增字段实现直接改为MySQL的字段属性,而且,这个字段必须是主键(key)并且不能有默认值。还有一个问题,如果您的应用要直接使用Oracle的某个序列,那么您只能在MySQL里面模拟实现一个,具体方法就是利用MySQL的自增字段实现的。

二、不可自动迁移部分;

视图、过程、函数、触发器

以上对象都是写sql语句进行编程的,两个数据库的有些语法是不一新的,所以这些都要开发人员进行人工修改在mysql中重新创建;

语法区别如下:

视图:mysql中视图不能有子查询,可以把字查询再建一个视

图;

触发器:mysql中触发器中before或after的触发事件(insert、

update、delete)只能有一个,oracle可以有多个;

字符串拼接:oracle直接用’||’,mysql只能用函数’concat’;

判断是否为空:oracle用nvl;mysql用ifnull;

变量定义:oracle可以只写一次DECLARE,Mysql需要在每句前面加

DECLARE

变量赋值:oracle用’:=’,mysql用’=’;

三、Oracle与Mysql几个主要根本区别

1、oracle中的包在mysql中不存在,要全部改成普通的存储过程;

2、用户及权限在oracle中是包含在各自的数据库里,而在mysql是数据库的用户及权

限在一个单独的数据库中(information_schema);

3、Oracle是没有敏感字段,是mysql有,如果有要修改成长非敏感名字;

4、系统架构区别:oracle有主备库,和集群架构(RAC)且RAC是基共享存储的,

Mysql有主从复制,和集群架构(ndbcluster),但ndbcluster是非共享

存储的。

四、建立迁移测试环境;

五、迁移实施;

相关文档
最新文档