Oracle编写应用运行在DB2上需要解决的技术问题

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

  目前在数据仓库的架构中,Oracle和DB2并存的现象很多。数据集市的建设不必完全采用一种数据库,而是可以根据实际需要来部署Oracle数据集市或者DB2数据集市。

  Oracle和DB2需要在系统架构中并存,那么在DB2 V9.7之前,从Oracle到DB2,开发上有什么挑战?为Oracle编写的应用要想运行在DB2上,有很多技术问题需要解决。其原因在于Oracle和DB2的锁机制不同、数据类型存在较大差别、服务器端的PL/SQL编程语言不同,以及客户端应用程序在语法和语义上存在差异。

  并发机制

  Oracle的默认隔离级是快照(Snapshot),写入事务不会阻塞读取事务,读取事务可以获取当前已提交值。DB2默认是游标稳定性(Cursor Stability),写入事务会阻塞读取事务。

  数据类型

  数据库的核心是数据,类型不匹配或者语义的不同都会影响应用是否可以同时在两种数据库中运行。Oracle支持一些非SQL标准的数据类型,例如VARCHAR2,这些是不被DB2支持的;另外,Oracle中的日期、时间格式和DB2中相应类型在语义上不完全一致;最后Oracle的PL/SQL存储过程所支持的一些标量数据类型在DB2中需要被映射才能被识别。

  隐式类型转换

  Oracle使用弱类型转换,而DB2使用强类型转换。隐式类型转换能完成一种类型向另外一种类型的自动转换,对于不匹配的类型,如果数据类型能被合理解释,比较或者赋值时可以执行隐式类型转换;强类型转换规则,意味着字符串和数字类型之间不能直接进行比较,除非显式转换。

  SQL方言

  DB2传统上坚持对SQL标准的支持,但Oracle实现了很多方言。例如:CONNECT BY 递归语句、(+)连接操作符、DUAL表、ROWNUM伪列、ROWID伪列、MINUS操作符、SELECT INTO FOR UPDATE语句、TRUNCATE TABLE等。如果要在DB2数据库上运行使用了上述方言的应用,就需要进行代码级别的翻译,工作量较大。

  PL/SQL语言

  就存储过程和函数开发而言, DB2使用SQL PL语言来开发,Oracle使用PL/SQL语言来开发。SQL PL和PL/SQL差异巨大,这也是从Oracle到DB2转型最大的工作量所在。

  内置包

  为了方便应用程序开发的需要,Oracle数据库提供了很多内置包:DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTILITY、UTL_FILE、UTL_MAIL和UTL_SMTP等。使用了这些包的应用程序要想在DB2上运行,就需要在DB2中重新实现一遍,工作量巨大。

  客户端编程接口

  Oracle和DB2针对不同的编程语言提供了不同的编程接口或者驱动,但是编程接口和驱动在语法上存在较大差异,而且在语义上也有一定区别。例如,Oracle针对Java语言提供了JDBC扩展,这与DB2提供的驱动在语法上存在一定的差异;有些JDBC接口方法,像executeQuery方法,DB2只能通过这个方法执行查询操作,而Oracle除了查询外,还可以执行其他DML操作。另外针对C语言,Oracle提供了OCI接口,而DB2提供了ECI接口,这两种接口的语法差别非常大。

上一篇: Oracle PL/SQL兼顾SQL PL开发者的双重需要
下一篇: 甲骨文Java版权案开庭在即 谷歌购多项IBM专利应对

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答