前两天领导给了个活,数据库迁移,原来的系统是用的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
编辑内容为
- 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 System为MySQL Server,在Connection Parameters中填写相应的MySQL数据库的连接信息,按“Next”继续。
3、进行数据库连接测试,测试通过后按“Next”到Source Schemata Selection,点选准备进行数据迁移的Schemata后按“Next”继续。
4、在Object Type Selection,点Detailed selection按钮,在下方左侧列表中选择不进行迁移的表,将其放入右侧列表中,即左侧列表剩余的表都将进行数据迁移。选择好之后按“Next”继续。
5、在Object Mapping的Migration of type Oracle Schema,如果要设置参数,点Set Parameter按钮。如果默认数据库表为UTF8的话,则选择Multilanguage;如果默认数据库表为GBK的话,则需要选择User defined,并在下方填写charset=gbk, collation=gbk_general_ci。Migration 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,在这里可以修改建表脚本。由于Oracle与MySQL之间语法规则的差异,通常需要对脚本的数据类型以及默认值进行调整,比如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等等,
这块不难改就是比较麻烦,需要大量的测试
总结:平台的迁移,不拿 比较麻烦,要细心,最主要的工作是测试
相关推荐
在IT领域,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,例如从Oracle迁移到Mysql。本文主要讨论了如何利用PHP来实现这个过程的技术要领。 首先,迁移的原因通常是经济性和技术性能的考虑。Mysql...
Oracle到MySQL转换工具是一种专门设计用于帮助用户将Oracle数据库中的数据和结构迁移至MySQL数据库的应用程序。这个过程通常称为数据库迁移或数据迁移,是企业在更换数据库系统时常常面临的需求。以下是一些关于...
Oracle和MySQL是两种广泛应用的DBMS,分别在企业级应用和轻量级Web服务中占据重要地位。有时,由于业务发展或技术迁移的需求,我们可能需要在两者之间进行数据迁移。针对这一需求,存在一些专门的工具来帮助实现...
### 基于某某平台的数据源迁移:Oracle 至 MySQL #### 一、背景 本文档旨在介绍一种从 Oracle 数据库迁移到 MySQL 的方案。起初,项目使用的是本地 Oracle 数据库作为数据源,但考虑到每次运行系统都需要手动启动...
在需要将Oracle数据库的数据迁移至MySQL时,就需要借助特定的转换工具来实现这一过程。"ora2mysqcn.exe" 就是一个这样的工具,专用于将Oracle数据迁移至MySQL的免费软件。 Oracle数据库是一个高级的关系型数据库...
"Convert Oracle to Mysql"这个主题涉及到将Oracle数据库系统的数据迁移至MySQL数据库系统的过程。Oracle和MySQL都是广泛使用的数据库管理系统,但它们在架构、语法和管理方面存在显著差异。以下是关于这个过程的...
Oracle到MySQL的数据迁移是一个常见的需求,特别是在企业进行数据库系统升级或优化时。Oracle数据库以其强大的功能和稳定性在大型企业中广泛应用,而MySQL由于其开源、轻量级和成本效益高的特性,常被用于中小型项目...
在这个名为"etl.RAR"的压缩包中,我们可以看到作者提供了一个ETL工具,专门用于将数据从Oracle数据库迁移到MySQL数据库。下面我们将详细探讨ETL过程、Oracle与MySQL数据库的特点以及可能涉及的函数和技巧。 首先,...
东方通Web应用迁移工具是将Web应用程序从一个Web服务器迁移到另一个Web服务器的工具。该工具提供了便捷的迁移过程,使得用户可以快速地将Web应用程序迁移到新的Web服务器上。 在本手册中,我们将详细介绍东方通Web...
在IT行业中,数据库是数据管理和存储的核心,而MySQL和Oracle是两种广泛应用的关系型数据库管理系统(RDBMS)。本文将深入探讨这两个数据库系统及其在实际应用中的相关知识点。 MySQL是一款开源、免费的SQL数据库,...
在实际的业务环境中,由于各种原因,如系统升级、合并或技术选型的变化,有时我们需要将数据从MySQL迁移到Oracle,或者反之。这时,“mysql-oracle数据转换工具”就显得尤为关键。 该工具的核心功能是实现数据的...
(1) 高度兼容 MySQL:TiDB 支持 MySQL 的大部分语法和函数,使得从 MySQL 迁移到 TiDB 变得容易。 (2) 水平弹性扩展:TiDB 采用无中心的设计,可以方便地添加或减少节点,实现存储和计算资源的水平扩展。 (3) ...
Oracle数据库是全球最受欢迎的关系型数据库管理系统之一,特别是对于大型企业和关键任务应用。Java连接Oracle数据库通常需要ojdbc.jar或ojdbc7.jar等JAR文件。这些JAR包含Oracle JDBC驱动,提供了必要的接口和类来...
了解这些差异对于开发者在不同数据库系统间迁移数据或编写数据库应用程序时至关重要。本文将深入探讨Oracle与MySQL在数据类型支持上的差异,并提供代码示例。 Oracle与MySQL在数据类型支持上的差异反映了它们在设计...
Oracle和MySQL作为两个主流的数据库管理系统,在数据安全性方面各有所长。本文将深入探讨Oracle与MySQL在数据安全性方面的差异,包括它们提供的安全性特性、最佳实践以及代码示例。 Oracle和MySQL在数据安全性方面都...
总结来说,从MySQL到Oracle的数据库转换是一个涉及多个环节的复杂过程,包括数据结构设计、数据迁移、逻辑转换、测试验证等多个步骤。使用专门的转换工具,如“mysq2oracn.exe”,可以简化这个过程,但仍然需要充分...
Oracle和MySQL作为两款主流的关系型数据库管理系统,在备份与恢复方面有着不同的特性和方法。本文将深入探讨Oracle与MySQL在备份与恢复方面的差异,包括它们的备份类型、恢复策略,以及具体的代码示例。 Oracle与...
Oracle和MySQL作为两款主流的关系型数据库管理系统,在索引管理方面有着各自独特的特性和最佳实践。本文将深入探讨Oracle与MySQL在索引管理方面的差异,包括索引类型、创建与管理索引的语法,以及索引优化的策略,并...
4. **MySQL数据库**:MySQL是一款开源、免费的数据库系统,广泛应用于Web应用。书中可能会讨论MySQL的SQL语法、事务处理、存储引擎选择、复制和分区等特性。 5. **SMO(SQL Management Objects)**:SMO是SQL ...
【标题】"Mysql转Oracle"的项目是一个关于将基于MySQL的数据系统迁移至Oracle数据库的实践案例。在软件开发中,这种迁移可能由于多种原因,如性能需求、企业标准、功能扩展等。这个压缩包中包含的资源可能帮助开发者...