存储过程迁移
‘壹’ 请问,将数据从SQL SERVER迁移到ORACLE容易吗
如果是大型应用并且数据量确实非常大推荐直接使用ORACLE,不建议从SQL
SERVER后期迁移,因为迁移的成本是非常高的(包括停机成本,测试,以及承担BUG的风险等),并不见得会比数据库之间的差价低。
如果是近TB的数据库,根据应用要求以及设计复杂程度,迁移可能需要一周甚至一个月,注意迁移并不是简单的导入导出,需要定制方案、风险评估、测试等,而测试往往是非常麻烦的
一、推荐使用ORACLE:
若是因为价格原因的话可以先选用标准版的ORACLE,价格较之企业版便宜很多而且直接附带RAC的授权(最高4节点每节点2CPU),性能完全足够用。当然标准版中没有分区以及DATAGUARD之类的选项,但即使没有分区也可以通过分布多个数据文件到不同设备上达到同样的效果,DATAGUARD应用并不是很多,可以直接使用第三方方案代替(例如HA)。
二、使用SQL
SERVER:
数据库的迁移是非常麻烦的事情,SQL
SERVER
到ORACLE也不例外。主要有以下几个问题
1、数据类型差异:
尽管大多数数据类型通用,但仍有专属数据类型,例如ORACLE的LOG
SEGMENT、ROWNUM伪劣等。这些数据类型有其特殊的定义(如SEGMENT),其他的数据库中并没有相应的概念,因此转换可能很复杂。
2、存储过程差异:
SQL
SERVER中是用T-SQL,而ORACLE中使用PL/SQL,两种存储过程尽管语法相似,但其实完全不同。ORACLE的PL/SQL中的很多功能是与ORACLE的特性相关的,并不是简单的语法相似就可以通用的。所以存储过程改写也是一个主要的问题。
3、其他问题:
主要有性能问题,SCHEMA属性,存储属性等
三、解决办法:
如果非要使用SQL
SEREVER,那么需要在设计时注意兼容性问题
1、如非必要,尽量避免使用特殊数据类型,以便于转换
2、同理,在编写T-SQL存储过程时,尽量避免使用一些特有的高级特性,尽量使用通用的语法,这样很多T-SQL都可以不用重写
3、SCHEMA的设计:SQL
SERVER中USER与SCHEMA为一对多,而ORACLE中为一对一且USER与SCHEMA同名,因此避免过于复杂的SCHEMA设计方案
4、如有可能,使用第三方的工具进行迁移也可提高效率