The filter pushed in subquery issue in oracle 11G (filter推进子查询)

注意上面的4# 计划 的fileter 部分, 这就是问题的根源。了解SQL的执行步骤应该清楚在sql parse阶段CBO会帮我们做sql查询转换生成高效的执行计划, 在本案例我们想把TO_NUMBER(“S”.”SCORE”)<60 的条件放到子查询返回的结果集后再过滤, 结果CBO错误把此条件提前和该字段的其它条件一并执行..

Adaptive Log File Sync In 11gr2 (_use_adaptive_log_file_sync)

Adaptive Log File sync was introduced in 11.2. the feature is exactly enabled since release 11.2.0.3 , It’s enabled through an underscore parameter called _use_adaptive_log_file_sync and the description of this parameter is: adaptively switch between post/wait and polling. Oracle can switches between the 2 methods: Post/wait, traditional method for posting completion of writes to redo … Read more

Invisible Indexes in oracle11g

11gr1起提供了Invisible Indexes,作用就是通过alter index xx invisible,对CBO隐身,我突然想到之前的一个情况,就是开发的在应用中滥用hint index,当时为了让hint index 无效,当时是选择index rename,现在看来如果是11g可以用invisible

oracle 11g BaseLine(基线)指定application中不可修改sql的执行计划

11G前有sql profile、outline可以稳定执行计划,但有些文档中指出有时outline指定了但也有要能走新的执行计划,所以11g的BASELINE是OUTLINE的改进版。一般应用在版本升级或稳定特定SQL的执行计划,也可以修改指定SQL的执行计划,当OUTLINE与BASELINE有同时指定时BASELINE有优先权。

Oracle11g新特性:只读表(read only table)

Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作。在Oracle11g之前的版本,只能将整个tablespace或者database置于read only状态。对于table的控制则只能通过权限来设定。

oracle 虚拟列(Virtual Columns )

今天看一个软件需求时,有总金额,还有使用年限,需要显示一个折旧率,10g及前可以用view,11gr1开始推出了virtual columns,就是在磁盘上不会储存实际数据,只是在查询里计算,这是一种时间换空间的方法

oracle11g掩盖敏感数据(remap_data)

不知道你有没有遇到过开发的需求导一份生产库的数据到测试库,但库表中有敏感信息如手机、身份证号等等等等,如果你全部把真实的数据给他们是不是太不负责人了(当然很多都这么做了),少导列可能会影响测试准确性,最好是用其它掩码覆盖…

oracle 11g index IFS/IFFS

oracle对于全索引的扫描支持两种,一种为index full scan简称IFS,另一种是index fast full scan简称IFFS, 后者带了fast是因为前者是单块有序读,而后者是多块无序读,所以多块读对于全扫来说要快于单块读, 对于两者的区别TOM在OTN上描述如下