2007-09-10

SQLServer2005移植到Oracle10g经验总结

来源: 本站收集整理 作者: 评论 0 条
 

此次需要完成的目标是将库从SQLServer 2005完整的移植到Oracle10g中,包括表结构、数据、视图、函数以及存储过程的移植,移植主要基于Oracle的OMWB(Oracle Migration Workbench)来完成,尽管OMWB能帮助完成大部分具备难度的工作,但还是有很多工作量的事情需要在OMWB完成后来手工进行,所以整个移植过程工作量看起来会非常大,但是不是仅仅只有工作量的问题呢?我觉得不是,写下这篇blog以便需要进行此项操作的同学以及给自己做个备忘。

由于目前OMWB仅支持SQLServer2000,根据官方网站的消息,OMWB的下一版会推出对SQLServer 2005的支持,所以在目前的情况下只能先把库从SQLServer 2005移植到SQLServer 2000,这就是我们移植过程的第一步了。

一、SQLServer 2005-->SQLServer 2000

一直以来,版本要降级都是很困难的,因为在新版本中必然会有些新的特性,而假如刚好凑巧你使用到了这些特性的话,在降级到低版本时就会碰到一些问题,在经过几次的尝试后,总结而言,这个过程还是比较轻易做的,究竟是同样的数据库,再怎么样也不会出太大的问题,不过也没有像将库从SQLServer 2000升级为SQLServer 2005那么简单,整个移植过程这么进行:

1、基于SQLServer 2005的数据导出将表结构和数据导入到SQLServer 2000;
这步中需要注重的是默认情况下SQLServer会将表和视图一起导入,在这里不要选择视图,否则导入到SQLServer 2000后有些视图会变成表,选择需要导入的表后基本上这步不会出现什么问题,可以完成表结构和数据的移植。
2、基于SQLServer 2005的生成脚本将视图/函数/存储过程移植到SQLServer 2000;

这步需要慢慢来,因为在视图/函数/存储过程中你可能使用到了一些SQLServer 2005的新特性,假如碰到这样的情况,只能是手工进行修改,以使它完全符合SQLServer 2000的要求,尽管在生成脚本时你可以选择生成的目标版本为SQLServer 2000,但还是会有部分脚本执行是会出错的。
在完成了SQLServer 2005到SQLServer 2000的移植后,就可以基于OMWB来把库从SQLServer 2000移植到Oracle了,这步尽管有工具,还是会比较的麻烦,总结如下:

二、SQLServer 2000-->Oracle 10g

关于如何基于OMWB将库从SQLServer 2000移植到Oracle 10g的操作步骤可参见此篇文档:
http://www.oracle.com/technology/global/cn/obe/10gr2_db_vmware/develop/omwb/omwb.htm
大家现在从oracle官方站下的话可能会找不到sqlserver 2000的插件包,假如找不到的话可以从这里下载:

我在这里要总结的是基于OMWB将库从SQLServer 2000移植到Oracle 10g后还需要手工做的一些事情,不要指望OMWB能无缝的帮你把库从SQLServer移植到Oracle中,银弹是不存在的,因此我们需要做些手工的工作完成库的移植:
1、移植表结构和数据可能会出现的问题;
表中字段的默认值/主键/外键/索引移植不过去,这些需要手工的进行补充;
2、移植视图可能会出现的问题;
移植过去的视图可能会出现各种语法错误的问题,这需要手工的修正,一般来说都是较为简单的错误;
另外一种问题就是有些视图可能会无法移植过去,这些视图就只能在对比OMWB的移植报告后找出来手工的进行移植了。

3、移植函数/存储过程可能会出现的问题;
移植过去的函数/存储过程中可能仍然会有不少的语法问题,例如像SCOPE_IDENTITY()、REPLICATE、newid()这些OMWB不知道该怎么处理的函数,还有像返回Table类型的这种函数,这些都只能在移植后手工的来进行纠正,关于函数不同造成的语法错误的现象大家可以参看这篇文档来做SQLServer和Oracle函数的对照:
http://www.mikecat.net/blogview.asp?logID=1559

移植过去的函数/存储过程可能编译是没有问题,也就是Oracle认为没有语法问题,但执行起来却会报错,像字符串相加,经过OMWB移植后有些字符串相加会替换成||,但是有些会遗漏,这个时候也只能手工来纠正这些错误了;
共2页: 上一页 1 [2] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:仅用xsl和asp实现分页功能  
下一篇:根据IP获取当地天气预报的实现
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号