Oracle Database 11gR2 (11.2) New Features in Oracle RAC

Oracle宣布在2009年9月29日将正式发布Oracle Database 11g Release 2,无论是从功能还是从稳定性的潜意识忧患上来说,众多还在使用Oracle9i的客户有理由直接从9i升级到11g了。 之前也有略略提过11gR2的新功能,那么对于企业级用户比较关心的RAC选件上来说,11gR2又有哪些具体的增强呢? Oracle在这个新版本中给我们的一个最主要印象是,Oracle Clusterware、ASM、RAC这三者泾渭分明的进化为三个独立的产品,在今后Oracle Clusterware就是一个全功能性的集群软件,将跟IBM的HACMP和HP的Service Guard分庭抗礼,ASM或者说ACFS将是一个全功能性的集群文件系统,跟IBM的GPFS和Veritas的VxFS直接竞争,RAC则是构筑在集群环境中的数据库解决方案。至此,Oracle对于企业级集群环境的一揽子解决方案(Total Solution)基本上已经成型。 1. Grid Plug and Play 即插即玩,冏。。。好吧,让我们跳过语意上的幻想,实际上Oracle一直在致力于提高整个Grid环境搭建配置的简便性,不可否认确实一直在进步,但是可惜的是,至少从文档中还看不出11gR2的Plug and Play比11gR1中就已经提供的Clusterware、ASM、RAC的clone功能有何种进步。 打包已经安装的程序文件,分发到其他节点上,然后运行clone.pl脚本,再运行root.sh完成增加节点的工作,目前看来还是这样的Play体验。 2. Role-separated management 前面说过,Oracle Clusterware已经独立为一个全功能性的集群软件,那么很明显在一个集群环境中将允许运行多个数据库应用,通过角色的控制提高了安全性的需求,每个DBA将只可以管理属于自己的那个数据库。 3. OCR performance enhancements 当集群环境中某些节点出现问题的时候,存取OCR的速度大幅提高,现在OCR可以存储在ASM中了,并且最多允许5份备份(之前是2份)。 4. SRVCTL support for single-instance database 仍然是再次提醒大家Oracle Clusterware将是独立的集群软件了,在11gR2中即使是单实例数据库也可以加入到集群环境中让Oracle Clusterware来监控数据库实例的状态,在必要的时候通过Oracle Restart来重新启动数据库实例。 5. Zero downtime for patching Oracle RAC 无论是给Clusterware还是给RAC打patch都不需要将整个集群环境全部关闭了。 6. ODVM and ACFS Oracle Dynamic Volume…

Adaptive Cursor Sharing in Oracle Database 11g

还记得2007年时候遭遇过一次由于cursor_sharing = similar导致的系统问题,大量游标无法共享,产生巨大的version count,最终让整个系统崩溃。 在这个案例中我提到有4个条件导致了问题的发生: 1. cursor_sharing = similar 2. 收集了列上的histogram 3. SQL中使用到了此列作为条件,并且条件是“等于” 4. 这个SQL是没有绑定变量的 在最近Optimizer Development Group的Why do I have hundreds of child cursors when cursor_sharing set to similar in 10g文章中又再次提到这个现象。 This is in fact the expected behavior when 1. CURSOR_SHARING is set to similar 2. Bind peeking is in use 3. And a…

About SCN propagation in Oracle RAC

关于昨天被客户问到Oracle RAC在节点间的同步问题,今天稍微整理一下。 由于Oracle RAC多节点共用一份数据库Datafile,因此在磁盘存储方面不存在同步问题。那么实际上所谓各节点同步指的是每个节点间SGA的同步,更专业一些的术语其实就是SCN propagation的算法。 在Oracle9i和Oracle10gR1中,SCN propagation默认使用Lamport方案,受到初始化参数MAX_COMMIT_PROPAGATION_DELAY影响,默认的同步间隔是7秒,也就是在极限情况下,一个节点上的更新在7秒后另外的节点才能知道。将该参数值设置为0,则表示要求任何一个事务在commit之后就立刻通知其他节点SCN变更了,这种方式就被称为BOC(Broadcast On Commit)。 在Oracle10gR2和Oracle11g中,BOC被作为了SCN propagation的默认方案,初始化参数MAX_COMMIT_PROPAGATION_DELAY被废弃,转换成了隐含参数_IMMEDIATE_COMMIT_PROPAGATION,默认值为TRUE。 SQL> @hidden Enter value for par: propagation old 14: x.ksppinm like ‘%_&par%’ new 14: x.ksppinm like ‘%_propagation%’ NAME VALUE ISDEFAULT ISMOD ISADJ —————————————- ————————- ——— ———- —– _evt_system_event_propagation TRUE TRUE FALSE FALSE _immediate_commit_propagation TRUE TRUE FALSE FALSE max_commit_propagation_delay 0 TRUE FALSE FALSE 在Oracle11g RAC中,BOC有了更进一步的改善。包括:…