WEB开发网
开发学院数据库Oracle SQLServer2005移植到Oracle10g经验总结 阅读

SQLServer2005移植到Oracle10g经验总结

 2008-08-30 12:44:44 来源:WEB开发网   
核心提示: 移植过去的函数/存储过程可能编译是没有问题,也就是Oracle认为没有语法问题,SQLServer2005移植到Oracle10g经验总结(3),但执行起来却会报错,像字符串相加,希望有类似经验的同学站出来说说自己碰到过的其他的问题,或者说说更好的方法,经过OMWB移植后有些字符串相加会替

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

移植过去的函数/存储过程在执行过程中可能会出现某些表的主键值不能为空的现象,造成这种现象的原因多数为在SQLServer中该字段的默认值定义的为IDENTITY,但在Oracle中没法赋予这样的默认值,只能在插入的sql语句中加上对于主键字段的赋值,可采用sequence的方式来生成顺序号;

移植过去的函数/存储过程中如果其中的查询语句是采用字符串的方式,然后动态执行的话,这个时候的查询语句就得手工修改为符合oracle的语法了,因为OMWB在移植时是不会对字符串形式的查询语句来做处理的;

部分函数/存储过程会由于OMWB确实无法处理,造成移植不到oracle,这个时候也必须参照OMWB的移植报告找出这些函数/存储过程来手工移植了。

整个移植过程可能会碰到比上面所列出的更多的别的问题,可以看出整个移植过程确实需要耗费不小的工作量,但总体而言,完成的难度并不高。

其实真的是这样吗?当然不是,就算你完成了上面的移植工作,那也只能说表面看上去移植是完成了,很有可能会出现这个存储过程语法等等都没有问题了,但执行的效果和SQLServer就是不一样,这是为什么呢?可能会是因为Oracle和SQLServer在并发控制、事务机制上是不同的,而这会影响到程序调用时的sql的编写、存储过程的编写等等,也就是说,在上面的移植过程的工作完成后,还得仔细检查现在的sql语句/函数/存储过程是否根据Oracle的机制达到了原来在SQLServer中期望的效果,只有做到这步的效果是一样的,才可以说移植过程完成了。

最后顺带说的就是应该根据Oracle的机制来采用符合oracle优化原则的方法来优化表/视图/函数/存储过程,如果不做这步的话,从sqlserver移植到oracle估计意义也不大了,当然,这可以不列为移植过程的工作。

总结差不多就是这样,希望有类似经验的同学站出来说说自己碰到过的其他的问题,或者说说更好的方法,也欢迎将来进行此项工作的同学在得到新的经验后写出来给大家分享,:)

上一页  1 2 3 

Tags:SQLServer 移植 Oracleg

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接