Oracle 迁移至MSSQL2008R2操作手册-仅供参考-阿里云开发者社区

开发者社区> 数据库> 正文

Oracle 迁移至MSSQL2008R2操作手册-仅供参考

简介: 总是在客户现场遇到一些小众化的迁移需求,客户以前为了追求高大上,选择的Oralce,但是缺乏专业维护人员,希望迁移到类似界面比较友好MSSQLServer上的需求,整理一份迁移操作手册供大家参考。

1      迁移须知

此迁移操作手册适用于ORACLE到MSSQL2008R2的表和数据迁移。

迁移使用微软提供的SSMA工具。

供有类似需求的您作为参考。

2      迁移步骤

2.1      第一步: 下载并安装SSMA软件和ORACLE客户端

 

从微软官方网站下载SSMA 5.3软件

SSMA for Oracle.5.3.0.exe 安装在WINDOWS平台上

SSMA for Oracle.5.3.0.ExtPack.exe 安装在SQL SERVRE 2008 R2上(即需要迁移到目的端的SQL SERVER上,功能是创建一些辅助运行需要的数据库表和存储过程等)

下载并安装ORACLE CLIENT

从ORACLE官网下载与操作系统匹配的ORALCE客户端软件

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

 

2.2      第二步:新建迁移项目

 

打开软件,建立迁移项目,fileànew project如图,这里选择迁移到SQL SERVER 2008

 

119f6c5c69cd225196fe52d12e723df37cf98286

 

 

a37d84b8ffe21ea40ed19d5a2144ac3362395b83

 

2.3      第三步:连接到ORACLE源服务器

 

连接源数据库oracle如图, 点击 connect, 将会加载ORACLE的对象,时间较长,需耐心等待

 

eab83bdc34bc019cf5b8fbcbca0bf5cb2ecd19af

 

4f96437992dce52a17f94d6215a32f92f5b3c586

 

 

 

2.4      第四步:连接目标数据库SQL SERVER目的端


a2d370817a8d862abca51b717f462b073c85ebea

 

点击连接,如果你没有安装SSMA for Oracle.5.3.0.ExtPack.exe,会有下图提示,即使没有安装,对于只迁移数据和表结构而言,经测试未产生影响。

 

07ba544aacff099814f4d1029b9f8430a97e394c

 

f9b2df504d348aa923eb050721d595ff245deb50

 

 

 

2.5      第五步:在SQL SERVER目的端创建对应的数据库名

 

例如:

 

USE master

GO

CREATE DATABASE ORA2SQLT01

GO

 

6de7d2019beaf756b08fbfdcee02fa617a5e40b6

 

2.6      第六步:选择要同步的对象

l  这里特别要注意,只选择(Tables)

l  评估迁移对象的成功率(Create Report)

 

如图,先点击Tables,再点击Create Report

4fdae5a6eb90a16234771605de706c336f0c2051

 

 

2.7      第七步:验证选择对象是否可转换

 

d7fa3b20d85649f7566a216cbde26492c2aa7b9f

 

 

这里有个警告,是从NUMBER的转换,需要验证数据才能知晓 另外,可能有索引、外键、主键和触发器迁移评估失败,这个请直接忽略掉。原因请看后面的注意事项。同时遇到这样的错误需要用户自己调整修改。

 

 

2.8      第七步:结构转换

 

验证没有问题对象,把结构转换后,写入SQL SERVER MEATDATA中(不是SQL SERVER R2中,是创建的项目中,这个一定要注意),同时可以看到转换的信息,如图:

点击Tables,然后点击Convert Schema

c0454e6abb1ca353566d9efa4b123baefe9ba757

 

 

5b6dc7c8291026f1170daf31cc45176bc70dd7e9

 

 

如果目标库存在该对象,就会提示:

c05adebe678062fd702fc764e7c5bfe04fd2e838

 

如果目标数据库中不存在该对象,就会创建该对象,如果不存在数据库,同样也会在目标实例生成数据库

 

 

2.9      第八步: 将SQL SERVER MEATADATA 同步到SQL SERVER 2008 R2服务中

如图:

先点击Tables,再点击Synchronize with Database

dc74259703aa5cd8f6fef2697f8d401501ad2ae5

 

d42e352a1d8ba1764fb428706ecf289114adaa5f


 

点击OK,结构就在SQL SERVER数据库服务中,你就可以看对象了, 这里可以看出来,主键、外键信息都导入过去了。

 


 

6baab1e705e10b45babd21136003dbc1635c3ade

 

 

2.10  第九步:同步数据

选择Oracle Metadata Explore,然后再点击Tables,接着点击Migrate Data

 


 

9be0821a978c76100ddd1897aae1094609c31cf3

 

填写ORALCE的连接

d64f40c5b1526cd162de4bd9d95b304983f869a8

 

 

填写SQL SERVER的连接

30ad6d6caaa08fb3dbb6838ae6f775bb8053d1db

 

等待数据转换结束,验证一下,时间较长,需耐心等待。

 

2.11  第十步:简单验证

 

数据库迁移成功后会显示如下信息,这个是微软给的评估,应该说是比较准确的了,不过自己可以选择性验证下,比如:


COUNT(*)验证一下数据的条数

 

76be940523eda6544e8af7c754eac2ffb36893c1

 

 

对比差异

从目前来看NUMBER和时间显示的确有点差异,不过应该问题不大

 

时间格式

ORACLE

b1d18ff43baa7891c22d1f04cc25e61b510b234f

 

SQL SERVER:

a7f56d3c1386bfcfcaed3a4e994cb5db5ea7e690

 

 

[POINTS] [numeric](20, 15)

 

ORACLE:

4bfed936a4c658b23535c87cc72a4178e94e2282

 

SQL SERVER

f6df229a8922d05a45cd368b39e20bae1e0e4882

 

暂时没有其他发现有差异的地方,这些差异,用户需要调整程序显示,同时要通过回归测试进行业务订正。

 

3    参考文档

4      注意事项


(1)只能全量,没有增量
(2)适合表数据和表结构的转换,触发器、存储过程、函数、试图等转化率还是比较低,需人工干预
(3)特别要注意大小写。Oracle区分大小写,所以SSMA也区分大小写,而SQL SERVER默认设置是不区分
(4)时间类型的字段转化后格式会发生变化、显示样式不一样
(5)NUMBER的小数点精度填充不一样,SQL SERVER会填充到指定的精度
(6)SSMA应用到迁移中的话,还是需要事先做一次迁移演练,测试数据的可用性、确定不能转换的对象,提前建立对应的对象,然后再实施迁移
(7)INDEX包含函数不会成功
(8)ORACLE主键DISABLE后,并且数据产生了重复不会成功
(9)触发器转换成功率很低,一般不会成功,需要人工处理

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章