oracle交互特点,1.3.1 新思路:Oracle兼容特性

1.3.1  新思路:Oracle兼容特性

从DB2 V9.7开始,DB2新引入了Oracle兼容特性。通过Oracle兼容特性,DB2提供了与Oracle相同的并发模式、与Oracle相同的交互模式,以及与Oracle相同的开发模式,这从技术上解决了老张所面临的棘手问题。

1.与Oracle相同的并发模式

从1.1.3节了解到:Oracle的默认隔离级是快照(Snapshot),在这种隔离级下,写入事务不会阻塞读取事务;DB2默认隔离级是游标稳定性(Cursor Stability),但是在这种隔离级下,写入事务会阻塞读取事务。这种不一样的并发模式对应用程序的开发和调试带来了很大的困难。

在DB2 V9.7及以后的版本中,只要在CS隔离级别下将DB参数cur_commit(当前已提交)设置为ON,并发模式就和Oracle完全一样了,如表1-2所示。

表1-2  cur_commit设为ON后DB2 CS隔离级别下的行为

情况

是否阻塞

读取遇到读取

读取遇到写入

写入遇到读取

写入遇到写入

关于如何设置DB参数,如何更好地提升DB2的并发性能,请参阅本系列之设计优化篇《DB2设计与性能优化--原理、方法和实践》以及运维篇《运筹帷幄DB2》。

2.与Oracle相同的交互模式

在Oracle中,很多开发人员非常熟练地使用SQL *PLUS和数据库交互,例如,执行DDL脚本、设置控制变量、列格式化输出等。从DB2 V9.7开始引入了DB2 CLPPlus,其实现了和SQL *PLUS一样的交互模式。关于 DB2 CLPPlus,请参阅本书2.3.2节中DB2 CLPPlus的有关内容。

3.与Oracle相同的开发模式

如表1-3所示,从DB2 V9.7开始,DB2 提供了与Oracle一样的开发模式,包括Oracle数据类型、Oracle SQL方言、PL/SQL扩展语言、Oracle内置包以及Oracle JDBC扩展,以实现从Oracle到DB2从容转身。例如Oracle数据库提供的内置包,诸如DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTILITY、UTL_FILE、UTL_MAIL和UTL_SMTP等都在DB2中实现了。

表1-3  DB2提供的Oracle兼容模式

Oracle

DB2

Oracle数据类型

支持

Oracle SQL方言

支持

PL/SQL扩展语言

支持

Oracle内置包

支持

Oracle JDBC扩展

支持

下面我们重点讲述一下DB2内嵌的SQL PL和PL/SQL双编译器。如图1-3所示,从DB2 V9.7开始引入了PL/SQL支持,其实现原理是在DB2引擎内部包含了两个编译器:SQL PL编译器和PL/SQL编译器。这两个编译器产生公共代码,公共代码在DB2 SQL统一运行时引擎内运行。另外,我们也可以看出:IBM Optim开发工具也和运行时引擎有机地整合在了一起,以更好地支持应用开发的需要,这样应用开发人员就可以方便地开发和调试PL/SQL代码了。

016dbd729d8631a5c46113f98c2b2a4b.png

图1-3  DB2内置PL/SQL编译器

那么,DB2通过内嵌PL/SQL编译器的方式实现原生态地支持PL/SQL语言,会带来什么好处呢?SQL PL编译器是为了支持一直专注于DB2 SQL PL的开发者;PL/SQL编译器提供了Oracle兼容模式支持,用以满足转用DB2的Oracle开发者的需要。这是一个巨大的进步,它使得使用PL/SQL语言专为Oracle数据库编写的应用可以无缝迁移到DB2数据库。具体来说,表现在以下三点:

开发人员可以继续选择自己最熟悉的语言进行开发,这为熟悉PL/SQL语言的开发者带来了非常大的便利。

应用开发商只需要编写一套PL/SQL源代码,就可以同时支持Oracle和DB2。

统一运行时引擎保证PL/SQL和SQL PL具有相同的性能。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值