The filter pushed in subquery issue in oracle 11G (filter推进子查询)
注意上面的4# 计划 的fileter 部分, 这就是问题的根源。了解SQL的执行步骤应该清楚在sql parse阶段CBO会帮我们做sql查询转换生成高效的执行计划, 在本案例我们想把TO_NUMBER(“S”.”SCORE”)<60 的条件放到子查询返回的结果集后再过滤, 结果CBO错误把此条件提前和该字段的其它条件一并执行..
提供综合数据库运维服务与优化方案(不限Oracle、MySQL、PG及国产数据库), 微信/Tel:(+86)134-365-60330
注意上面的4# 计划 的fileter 部分, 这就是问题的根源。了解SQL的执行步骤应该清楚在sql parse阶段CBO会帮我们做sql查询转换生成高效的执行计划, 在本案例我们想把TO_NUMBER(“S”.”SCORE”)<60 的条件放到子查询返回的结果集后再过滤, 结果CBO错误把此条件提前和该字段的其它条件一并执行..
今天开发的同事找我说是一个报表系统的SQL执行第一次很快,再执行就慢的几乎查询无响应,找他要来了SQL,也是常见的表关连LIFT JOIN 、GROUP BY的统计报表, 出于篇幅原因不再贴SQL, 把SQL放到TOAD 中问题依然可以再现,..
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
高parse calls表示这些SQL不可以re-used 并且每次执行都要重新解析,理想的最佳状态是一次解析多次执行,你也知道频繁的解析会给library cache带来沉重的负担, 一个sql的执行必须先parse,解析过程包含sql 加载到shared pool, 语法检查…
当做EXPDP 逻辑备份时常用到FULL=Y 的全库备份,但是有些schema不想每次都备份如一些自带的schemas(如APEX_030200),这时可以使用exclude很方便的排除…
11gr1起提供了Invisible Indexes,作用就是通过alter index xx invisible,对CBO隐身,我突然想到之前的一个情况,就是开发的在应用中滥用hint index,当时为了让hint index 无效,当时是选择index rename,现在看来如果是11g可以用invisible
ACFS storage management design that extends Oracle Automatic Storage Management (Oracle ASM) technology to support all application data
11G前有sql profile、outline可以稳定执行计划,但有些文档中指出有时outline指定了但也有要能走新的执行计划,所以11g的BASELINE是OUTLINE的改进版。一般应用在版本升级或稳定特定SQL的执行计划,也可以修改指定SQL的执行计划,当OUTLINE与BASELINE有同时指定时BASELINE有优先权。
Automatic Memory Management (AMM) 在ORACLE 11g中被引入,这是从OS级别内存管理的重大改变,回顾ORACLE的版本更新历程,内存管理也在逐步的更新
昨天在家里的本本虚拟机里配置11G R2 RAC时,GI安装正常,db soft 安装正常,查看资源asm 磁盘也正常,GI是用的GRID 用户及用ASMLIB配置的ASM DISKGROUP.但到最后一步用ORACLE用户DBCA建库时,在储存选择ASM,无法找到ASMDISKGROUP?
Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作。在Oracle11g之前的版本,只能将整个tablespace或者database置于read only状态。对于table的控制则只能通过权限来设定。
今天看一个软件需求时,有总金额,还有使用年限,需要显示一个折旧率,10g及前可以用view,11gr1开始推出了virtual columns,就是在磁盘上不会储存实际数据,只是在查询里计算,这是一种时间换空间的方法
在ORACLE11G开始,sqlplus 提供了几个非常有趣的功能接口,比如记录执行的错误日志有sqlplus 的执行文件自动记录到数据库的表中,从而替代了glogin.sql的实现方法
11g r2默认是使用segment creation deferred建立,新建的无记录表不分配sement,当insert 第一条记录时分配段空间,不会因truncate而回收,并且在sys schema里不支持
今天看oracle11g新特性发现宣称11G,用了新的zlib算法在压缩上改变很多,可以比oracle10g压缩算法快40%,空间减少20%,准不准不先不说,测试看应用有什么变化吧…
oracle 11G 对 现有表增加指定默认值列方式发生了很大变化,无论是存储方式上,还是效率上,下面看一个简单的实验
不知道你有没有遇到过开发的需求导一份生产库的数据到测试库,但库表中有敏感信息如手机、身份证号等等等等,如果你全部把真实的数据给他们是不是太不负责人了(当然很多都这么做了),少导列可能会影响测试准确性,最好是用其它掩码覆盖…
oracle对于全索引的扫描支持两种,一种为index full scan简称IFS,另一种是index fast full scan简称IFFS, 后者带了fast是因为前者是单块有序读,而后者是多块无序读,所以多块读对于全扫来说要快于单块读, 对于两者的区别TOM在OTN上描述如下