文档章节

web系统从oracle迁移至MySql

咖啡加糖
 咖啡加糖
发布于 2014/09/23 16:34
字数 1544
阅读 109
收藏 1

前两天领导给了个活,数据库迁移,原来的系统是用的oracle数据库,现在要改成MySql,当时没多想就接下来了,

原来的系统用的框架式SSI,于是大概想了下需要作调整无非以下几点

第一   数据库迁移

第二   应用程序的修改


下面详细来说下这个过程


一    数据库迁移

简单那的来说就是把oracle数据库里面的所有数据都迁移到MySql,这个可以用MySQLMigration Toolkit工具

MySQL发布了一个将数据由SQL Server或Oracle中移植到MySQL中的工具包MySQLMigration Toolkit。这一工具包通过向导介面,轻松将已有数据导入MySQL数据库,可以迅速移植,包括各种数据库中的表结构和视图降低风险,运用了经过证实的移植策略,节约成本,集成化的工具包可大幅提高效率,减少日常维护工作Oracle-to-MySQL。

使用MySQLMigration Toolkit移植后,表的字段类型会有所变化(从Oracle到Mysql):VARCHAR2→VARCHAR,DATE→DATETIME,TIMESTAMP→DATETIME,NUMBER→DECIMAL,INTEGER→DECIMAL(22,0)。

在迁移操作MigratedObjects步骤中会报row size too large的错,选择有问题的表,点左下方的Advanced,将varchar(4000)的列类型改为TEXT就行。

表的主键、外键不会出问题,核对下即可。表的索引(Oraclede的位图索引)会被转换成BTree索引。同时表和字段的注释信息会丢失。

注意:我迁移的时候,只是把表和数据做了迁移,一些视图、触发器、函数、存储过程之类都是手动做的

下面是具体的操作步骤

1  安装MySQLMigration Toolkit这个就不做具体介绍了,网上一找都是一堆,安装完成后,打开MySQLMigration Toolkit时遇到了错误如下


Migration Toolkit an error occured during the initialzation of the runtimes system.please make sure........;

网上很多的解决方法但是我试了都不行,找了很久总算找到了一个方法,具体操作如下

在MySQLMigrationTool.exe的目录里面新建MySQLMigrationTool.cmd
编辑内容为

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

  1. MySQLMigrationTool.exe -jvm "D:\Program Files (x86)\Java\jdk1.7.0_01\jre\bin\client\jvm.dll" 

jvm.dll的用你机器上真实的路径,然后直接用MySQLMigrationTool.cmd启动,问题解决


2 迁移数据库

1、 运行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中选择Oracle Database Server,如果第一次使用会告之要求加载驱动程序ojdbc14.jar 

 

加载驱动程序之后,界面将变成如下的形式,在其中填写Oracle数据库的连接信息,按“Next”继续。

 

 

2、 Target Database中默认Database SystemMySQL Server,在Connection Parameters中填写相应的MySQL数据库的连接信息,按“Next”继续。

 

 

    3、进行数据库连接测试,测试通过后按“Next”到Source Schemata Selection,点选准备进行数据迁移的Schemata后按“Next”继续。

 

    4、在Object Type Selection,点Detailed selection按钮,在下方左侧列表中选择不进行迁移的表,将其放入右侧列表中,即左侧列表剩余的表都将进行数据迁移。选择好之后按“Next”继续。

 

    5、在Object MappingMigration of type Oracle Schema,如果要设置参数,点Set Parameter按钮。如果默认数据库表为UTF8的话,则选择Multilanguage;如果默认数据库表为GBK的话,则需要选择User defined,并在下方填写charset=gbk, collation=gbk_general_ciMigration of type Oracle Table中要设置参数点Set Parameter按钮。如果默认数据库表为UTF8的话,则选择Data consistency/multilanguage;如果默认数据库表为GBK的话,则需要选择User defined,并在下方填写addAutoincrement=yes, charset=gbk, collation=gbk_general_ci, engine=INNODB。选择好之后按“Next”继续。

 

    6、再到Manual Editing,在这里可以修改建表脚本。由于OracleMySQL之间语法规则的差异,通常需要对脚本的数据类型以及默认值进行调整,比如Oracle中通常会对Timestamp类型的数据设置默认值sysdate,但在MySQL中是不能识别的。在Filter中选择Show All Objects,然后在Migrated Objects中选择要修改脚本的表,再点击左下方的Advanced就可以进行脚本编辑了。修改完之后点击右侧Apply Changes按钮保存,按“Next”继续。

 

7、然后一路“Next”,如果没有提示出错的话,就可以将指定表中的数据导入MySQL了。如果有提示出错信息,则需要返回到Manual Editing处对脚本重新进行修改。

 

需要补充一点,在导大容量数据特别是CLOB数据时,可能会出现异常:“Packets larger than max_allowed_packet are not allowed”。这是由于MySQL数据库有一个系统参数max_allowed_packet,其默认值为1048576(1M),可以通过如下语句在数据库中查询其值:

show VARIABLES like '%max_allowed_packet%';

修改此参数的方法是在mysql文件夹找到my.ini文件,在my.ini文件[mysqld]中添加一行:

    max_allowed_packet=16777216

重启MySQL,这样将可以导入不大于16M的数据了,当然这数值可以根据需要作调整

这里需要注意的是:在第五步操作的时候,参数一定要设置,刚开始没设置,数据结构都能导入成功,但是很多表的数据都没有进去或者少了很多数据,我把igration of type Oracle Schema、Migration of type Oracle Table参数设置成UTF-8后就没有问题,具体原因不清楚

3 手动的迁移函数、视图、存储过程等,如果有多用户的话也是要迁移的,这里不好做详细说明,具体的操作课到网上找


第二 程序的调整

平台的迁移是比较麻烦的事情,因为我们的框架是ssi,里面与很多的sql.xml,这个也不好详细说明,

只能列出几个注意点:

1 分页的修改 2 sql中函数的修改 如 to_char等等,

这块不难改就是比较麻烦,需要大量的测试

总结:平台的迁移,不拿 比较麻烦,要细心,最主要的工作是测试



© 著作权归作者所有

咖啡加糖

咖啡加糖

粉丝 17
博文 21
码字总数 18836
作品 0
南京
程序员
私信 提问
SakaiCLE2.9数据库迁移

最近做了很多关于Sakai数据库迁移的工作,服务器和服务器之间,Oralcle和Mysql之间导来导去。尽管最后发现都是无用功,但把数据库迁移的过程记下来,也算没白忙活。 Oracle版本:Oracle11g2 ...

MKZ1991
2013/05/03
272
0
某航空公司数据迁移项目(咨询+实施)

项目背景 某航空公司现有系统都是ORACLE,近期需要尽快迁移到MYSQL上去。 项目目标: 对现有系统的迁移进行评估,并尽快从ORACLE迁移到MYSQL上,并保证系统的可靠性。 人员需求: 1、精通ORA...

HTwanglTJ
2017/06/01
7
4
大型互联网应用去Oracle改造经验总结

为什么要去Oracle 现在好像是个互联网公司好像都在谈去IOE,也有人问过我们,去IOE到底有什么受益?我们公司为什么要去IOE呢?当然实际情况是因为我们上层领导决定的,所以我们都热火朝天的干...

杨武兵
2016/03/10
394
0
数据库应用-mysql语句拾遗

MySQL (关系型数据库管理系统) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好...

zyx1990zm
2017/01/06
0
0
MySQL日渐封闭 谷歌加入MariaDB阵营

【IT168 评论】据外媒报道,近日,谷歌高级系统工程师对其数据库MySQL生态系统现状的展示中显示,谷歌的数据库已大部分由MySQL迁移至MariaDB,这是MySQL被Oracle收购后又一次被重量级用户抛弃...

站长之家
2013/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Leetcode PHP题解--D118 350. Intersection of Two Arrays II

D118 350. Intersection of Two Arrays II 题目链接 350. Intersection of Two Arrays II 题目分析 返回给定两个数组的交集。 思路 从数量较多的那个数组开始去另一个数组寻找是否元素存在,...

skys215
15分钟前
2
0
从源码上分析Android View保存数据状态

在Android开发旅途中,经常会遇到系统控件无法满足我们的视觉,交互效果,这个时候我们常常需要自己自定义控件来满足我们的需求。在这个开发探索过程中,我们不可避免得遇到View要保存状态信...

shzwork
16分钟前
2
0
请问AD603AQ和AD603AR有什么区别?

  AD603AQ和AD603AR只是在封装上的区别,前者是双列直插式,后者是贴片式,AD603A系列的温度都是在—40摄氏度到+85摄氏度之间,AD603还有一个系列是AD603S,它的温度是在—55摄氏度到+125摄...

仙溪
17分钟前
2
0
Linux /etc/profile 配置文件修改

1. 执行命令: vi /etc/profile 去类似windows 配置环境变量, 2.修改完,立即生效命令: source /etc/profile

kuchawyz
18分钟前
2
0
对于小白来说素描怎么入门?怎么学习?

素描初学者怎样入门?初学者怎样才能画好素描绘画?画好素描绘画有哪些技巧?想必这些问题都是绘画初学者们比较伤脑筋的问题,那么初学者到底怎样才能画好素描绘画呢?今天收集整理了关于素描...

huihuajiaocheng
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部