关于SQLserver2000移植到oracle9i的实践(原)

来源:互联网 发布:洛克希德马丁 知乎 编辑:程序博客网 时间:2024/06/05 15:40

这两天一直在做SQLserver2000移植到oracle9i的数据导入,发现了一些问题,现在总结一下:

导入环境:第三方服务器上(windows2003)

导入方法:sqlser DTS工具

导入步骤:1、安装oracle10g客户端软,配置要导入的数据库服务实例(比如实例名为:testDB),安装完之后最好重启一下机子,保证数据库驱动程序生效(笔者就遇到过装好数据库却怎么也用不了oralce驱动程序的问题,最后没有办法应用了网管的杀手锏:重启机器搞定)

2、建oracle的DNS数据库驱动文件(oracle的客户安装好之的,相应oracle版本的驱动也安装上了)

3、对应好sqlserver与oracle要导入的相应的表即可

注意事项:我在导入的过程中出现下列问题

1、一形如第三方服务上的装的是oracle9i,在地导入表名较短不会有问题,但是导入表名长点表时,就会报“ORA-01740 missing double quote in identifier ”的错误,这是因为oralce9i的驱动程序只支持表名的长度是11个字符以下,超过就会报错,装上oracle10g就不会出现这个问题。

2、在用oracle9i的驱动时,如果表名长度小于11字符时,又出现了“ 系统严重错误exception_access_violation”最后sqlserver死掉,因为sqlserver里的一表的字段类型不能导入oracle,笔者是遇到sqlserver里的money字段导入出错,这也是oralce版本的问题,装上oracle10g就不会出现这个问题。

3、sqlser在导入oracle表时,新建的表的名字和字段都加上"双引号,导入可以先把创建脚本拷贝出来,手工在oracle里先上建些表再导入,不然带双引号建上的表,查询时必需加上引号,不然会报错,说表不存在。

4、如果要建作业定时导入时,注意要在要执行作业的机子上建导入包,因为作业执行要用的是本地服务器上oralce驱动程序文件,比如要第三方服务器执行作业就把导入包建在这台服务器上。如果要在要导入的sqlserver服务器上执行作业,就应该去要导入的sqlserver服务器建导入包。不然手工执行包能够成功,但不能执行作业。