`
hbxflihua
  • 浏览: 683322 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

系统从MySQL迁移至ORACLE实现方案

阅读更多

一、数据库脚本迁移

 

1、数据结构同步

打开Navicat Premium,点击菜单【工具】-【数据传输】,在弹出的对话框中选择对应的源库和目标库。

为使用方便,请在TAB页【高级】中,将【转换对象名为】勾选,并选择【大写】。设置完成后点击【开始】按钮即可进行数据脚本同步。

注意:数据传输过程中,可能会因为MySQL数据库设计的不规范导致出现异常,请及时修正源库对应的数据结构。Oracle中标识符的最大长度是30个字符,标识符包括但不限于表名、字段名、视图名、序列名、主键。

 

2、表结构调整

Navicat Premium数据同步时,不对列长度进行精确设置(保留默认长度),故需要在数据结构同步完成以后再将Oracle数据库脚本导出并对列的长度进行精确的设置。

注意:Oracle数据库表中有数据时不能直接修改表结构,所以建议导出数据库脚本,在脚本中进行修改。另外,Navicat Premium导出的SQL包含前缀和双引号,请在导出后去除。

 

3、添加sequence

Oracle表的主键自增是通过sequence实现的,故需要为表自增主键添加sequence,sequence创建示例如下:

CREATE SEQUENCE SEQ_ACCOUNT_INFO INCREMENT BY 1 START WITH 1 minvalue 1 NOMAXVALUE NOCACHE;

 

 

二、系统配置调整

1、pom文件中添加Oracle数据库驱动

<dependency>
				<groupId>com.oracle</groupId>
				<artifactId>ojdbc14</artifactId>
				<version>10.2.0.4.0</version>
				<scope>system</scope>
				<systemPath>${project_basedir}/lib/ojdbc14-10.2.0.4.0.jar</systemPath>
</dependency>

 

2、调整数据源

jdbc.properties配置调整

db.driverClassName=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@10.10.1.107:1521:orcl
db.username=root
db.password=root
db.mapper=classpath:mybatis/oracle/*Mapper.xml
validationQuery=SELECT 'x' FROM DUAL

 

三、Java后台调整

 

1、 Mapper文件中,自增主键调整为Oracle的sequence方式

    原MySQL的方式如下:

<selectKey resultType="java.lang.Long" keyProperty="id" order="BEFORE" >
SELECT LAST_INSERT_ID()
</selectKey>

     Oracle的sequence方式如下:

<selectKey resultType="java.lang.Long" keyProperty="id" order="BEFORE" >
SELECT SEQ_ACCOUNT_INFO.NEXTVAL FROM DUAL
</selectKey>

 

2、日期(时间)类型调整

 

    日期格式化

MySQL数据库通过DATE_FORMAT(date,format)函数将日期格式化为字符串,其中format可用的标识符有:%Y(年)、%m(月)、%H(小时)、%i(分钟)、%S(秒)等等,常用的格式有'%Y-%m-%d'、'%H:%i:%S'、'%Y%m'等。

Oracle数据库使用TO_CHAR(date,format)函数对日期进行格式化,如对当前日期进行格式化:TO_CHAR(SYSDATE,'yyyy-mm-dd HH:mi:ss')。

另外,MySQL是弱类型的数据类型,在字符串转日期(其他类型也一样)时只要符合日期格式不需要进行类型转换,但是Oracle必须进行类型转换。Oracle提供了TO_DATE(date_str,'yyyy-mm-dd hh24:mi:ss')函数将字符串转换为日期类型。

 

    取当前日期的函数

MySQL常用取当前日期(时间)的函数有:NOW()、SYSDATE()、CURDATE()、CURTIME()等。Oracle中使用SYSDATE。

 

    计算时间差

MySQL数据库使用TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)函数来计算时差,其中interval可以是YEAR(年)、QUARTER(季度)、MONTH(月)、WEEK(星期)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒) 、FRAC_SECOND(毫秒),如计算2017年五一劳动节距今的天数:

SELECT TIMESTAMPDIFF(day,'2017-05-01',now());

 MySQL还有很多计算时间差的函数,如DATEDIFF(date1,date2)等。

 Oracle数据库直接通过两日期相减来实现时间差的计算,如计算2017年五一劳动节距今的天数:

SELECT FLOOR(SYSDATE-TO_DATE('2017-5-1','yyyy-mm-dd')) FROM DUAL ;

 计算2017年五一距今的小时数:

SELECT FLOOR(TO_NUMBER(SYSDATE-TO_DATE('2017-5-1 00:00:00','yyyy-mm-dd hh24:mi:ss'))*24) FROM DUAL ;

 

3、模糊查询

    MySQL使用

concat('%',#{keywords},'%')

     Oracle中使用

'%'||#{keywords}||'%'

 

四、 常见问题

1、去除重复列,防止在oracle分页查询时报错:ORA-00918: 未明确定义列。

 

2、出现ORA-00942: 表或视图不存在错误,可能是数据库表名错误,也可能是没有权限或者账号不存在等等。

 

3、MySQL 字符串支持单引号和双引号,但Oracle只支持单引号。

 

4、Oracle里进行分组统计时,非聚合列必须全部放在group by 子句中。如果还涉及到排序,排序的列也必须在group by 子句中。MySQL 5.7之前对分组统计没有强制约束,5.7之后 和oracle遵循相同的标准。

 

5、不能在Oracle的GROUP BY子句中使用列别名。

 

6、Oracle 中别名不能加单引号。

 

7、MySQL 的批量插入、更新转换为 Oracle 的批量插入、更新时需加上begin end

BEGIN 
statement
; END ;

 

  • 大小: 49.6 KB
分享到:
评论

相关推荐

    记使用Oracle SQL Developer 迁移MySql 数据至 Oracle.docx

    在IT领域,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从MySQL迁移到Oracle。本文将详细讲解如何使用Oracle SQL Developer工具进行这样的迁移过程,以及如何解决在迁移过程中遇到的问题。 首先...

    Mysql迁移Oracle方案

    ### MySQL 迁移至 Oracle 方案详解 #### 一、环境准备 在进行MySQL到Oracle的数据迁移之前,首先需要做好一系列的准备工作。 ##### 1.1 导入机 - **安装Oracle 11g数据库**:确保安装过程中正确配置数据库的各项...

    Mysql迁移到Oracle就是这么简单

    本篇文章将深入探讨如何从MySQL迁移到Oracle,以及在过程中可能遇到的问题和解决方案。 首先,MySQL是一款开源、免费的DBMS,以其易用性、灵活性和高效性能受到中小型企业的青睐。而Oracle则是一款企业级的、功能...

    Oracle到Mysql数据库迁移总结

    Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结

    从Oracle迁移到MySQL经典实战

    本教程将深入探讨这一迁移过程中的关键步骤和策略,帮助企业在保证数据安全性和服务连续性的前提下,成功实现从Oracle到MySQL的平滑过渡。 首先,我们需要理解Oracle和MySQL之间的主要差异。Oracle是一款全面的企业...

    强大简单的mysql迁移到oracle的工具

    NULL 博文链接:https://noobjava.iteye.com/blog/870011

    mysql迁移数据到oracle实用工具,试用版

    总之,Dbmover for MySQL to Oracle 提供了一个强大而全面的解决方案,帮助用户克服不同数据库系统之间的障碍,实现高效、安全的数据迁移。对于需要在MySQL和Oracle之间迁移数据的企业和个人来说,这是一个值得考虑...

    超级好用的数据库迁移工具(MySQL、Oracle)

    由于各种原因,用户可能需要将数据从MySQL迁移到Oracle,或反之亦然。 数据库迁移的核心步骤包括数据抽取、转换和加载(ETL)。DataX作为阿里云推出的一款开源数据同步工具,支持多种数据库之间的数据迁移,包括...

    Mysql转Oracle软件 DBMover for Mysql to Oracle

    Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...

    mysql 数据库转 oracle

    MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为各种原因需要从MySQL迁移到功能更强大的Oracle数据库系统。下面将详细讲解这个过程涉及的关键知识点。 首先,我们需要了解MySQL和Oracle...

    Mysql迁移到Oracle一些需要注意的事项和方案

    在将Mysql数据库迁移到Oracle的...以上是Mysql迁移到Oracle过程中需要关注的主要知识点,实际操作中还可能遇到其他问题,需根据具体情况灵活应对。迁移是一项复杂的工作,需要充分的规划和测试,以确保业务的平稳过渡。

    瀚高迁移工具,迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、Kingbase、DM

    migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更好地实现数据迁移工程...

    Oracle至PostgreSQL数据库迁移方案.pptx

    Oracle至PostgreSQL数据库迁移方案是使用Ora2PG工具实现的,该工具是一个Perl语言编写的开源工具,用于将Oracle或MySQL数据库迁移到PostgreSQL数据库。下面是该方案的详细知识点: 一、Ora2PG简介 Ora2PG是一个...

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    oracle Mysql相互转化的工具

    压缩包中的“mysql-oracle数据转换工具”很可能是一个实现以上功能的软件,用户可以根据实际需求选择合适的工具进行数据迁移工作。在使用前,应详细了解工具的特性和限制,以确保迁移过程的顺利进行。此外,进行...

    mysql-oracle数据同步

    首先,我们要理解MySQL和Oracle是两种不同的关系型数据库管理系统(RDBMS)。MySQL以其开源、轻量级、高效的特点被广泛应用,而Oracle则以强大的企业级特性,如高可用性、安全性等,成为大型企业的首选。当业务发展...

    Oracle导Mysql适用于百、千万级别数据迁移

    Oracle导Mysql适用于百、千万级别数据迁移,速度是kettle的10倍以上数据库迁移 数据迁移 千万级 亿万级数据,MySQL oracle关系型 现需要开发一套程序用来快速迁移数据库,要求如下: 1.使用人员可以指定迁移数据库...

    从Oracle迁移数据到MySql-工具oracle2mysqlcn

    数据迁移 oracle转mysql oracle数据迁移 mysql数据迁移 从Oracle迁移数据到MySql-工具oracle2mysqlcn 从Oracle迁移数据到MySql方法大全文章地址: http://www.bywei.cn/post/111.html

Global site tag (gtag.js) - Google Analytics