将应用程序从Sql Server迁移到Oracle

数据库: Sql Server 2008, Oracle 9i
工具: Sybase PowerDesiner 12 试用版, PL/SQL Developer 7.1.5

迁移主要有两个工作:
  1. 根据Sql Server数据库生成创建Oracle数据库的脚本
  2. 修改代码中的SQL语句

根据Sql Server数据库生成创建Oracle数据库的脚本
  1. 用PowerDesiner将Sql Server数据库反向工程生成物理数据模型
  2. 根据反向工程生成的物理数据模型创建逻辑模型
  3. 再根据逻辑模型生成Oracle数据库版本的物理模型
  4. 根据Oracle数据库版本的物理模型生成Oracle数据库创建脚本
  5. 按照Oracle命名规则和数据类型定义修改Oracle数据库创建脚本
  6. 在PL/SQL Developer中执行以检验其正确性

修改代码中的SQL语句
  1. Sql Server中经常用方括号把表名和字段名括起来, 到Oracle中要把这些方括号都去掉
  2. 将参数变更前的"@"符号改为":"符号
  3. 将Sql Server专有的方法和函数替换成Oracle相应的方法和函数
  4. 在PL/SQL Developer中执行SQL语句以检验其正确性

转换过程中的常见问题
  1. 表名和字段名使用了Oracle中的关键字
  2. Sql Server中的NVARCHAR数据类型可存4000个汉字, Oracle中的NVARCHAR/NVARCHAR2数据类型只能存2000个汉


  3. 索引名称和外键名称超过了30个字符
  4. PowerDesigner生成的脚本, 表名和字段名都加了引号, 要去掉
  5. Sql Server 查询语句支持返回多个结果集, Oracle不支持. Oracle中返回多个结果集要用游标
  6. Sql Server的Insert语句可以不要Into关键字, Oracle必须加上, 不然会报错
  7. Sql Server中的Sql语句喜欢加上方括号, 在Oracle中要去掉
  8. Asp.Net从Oracle读取空字串后会变成NULL值
  9. Sql Server中的Xml类型转换到Oracle中, 要使用NClob类型才不会出错

参考引用:
  Oracle 数据类型
    http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/sql_elements2a.htm#45443

  Oracle 关键字
    http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/ap_keywd.htm#617080

  Oracle 命名规则
    http://q.yesky.com/group/review-17556825.html

  将公司系统从SqlServer 2K移植到Oracle 10g中的简要总结
    http://www.cnblogs.com/yiping06993010/archive/2007/08/02/840220.html

原文地址:https://www.cnblogs.com/jacktang/p/1375912.html