Oracle层次查询中connect_by_iscycle伪列的取值研究
这半年过的很充实,无暇顾及blog,还好阔别不长,兴致未减。表里的记录若存在上下级关系,借助层次查询(Hierarchical query)能将记录按照树状形式输出,关于层次查询这里不展开介绍。我们要研究的是当表中的上下级记录之间存在循环关系时,oracle是如何把这些引起循环的行标记出来的。#####创建测试用表...
如何定位SQL语句在共享池里用到了哪些chunks
一条SQL语句执行后,如何找到其在shared pool里占用的chunks,做了一个简单的测试:---先清空shared poolalter system flush shared_pool;---执行sql语句select * from scott.t1 where username='SYS';USERNAME US...
从dba_hist_active_sess_history里寻找session间的等待关系
dba_hist_active_sess_history每隔10秒钟转储来自v$active_session_history的活动session信息(v$active_session_history.IS_AWR_SAMPLE=Y对应的行会被采集到到dba_hist_active_sess_history),作为AWR、ASH的重要补充,dba_hist_active_sess_history是我们drill down的有效数据来源,特别是session之间存在相互牵制...
select any table权限可能引发大量latch row cache objects等待事件
<p><span style="font-family:'微软雅黑','sans-serif';font-size:12pt;">某个后台批量作业发起数据抽取操作后,在数据库里引起了上百个</span><span style="font-size:12pt;">session</span><span style="font-family:'微软雅黑','sans-serif';font-size:12pt;">都在等待名为</span><span style="font-size:12pt;...
如何使用awr_set_report_thresholds控制AWR报告里的sql语句数量
AWR报告里和sql语句有关的section有SQL ordered by Elapsed Time、SQL ordered by CPU Time、SQL ordered by User I/O Wait Time、SQL ordered by Gets等。一次在分析一个负荷较高的数据库时为了能在上述section中看到更多的SQL语句,特意通过DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(topnsql=>50)将AWR捕捉的SQ...
ORACLE 11g Result cache使用指南
何为result cache?result cache,结果缓存,当表的访问方式以读为主前提下,从一张大表中过滤出少量的记录作为结果集的查询语句适合把查询结果集放入result cache,后续相同的查询语句可以直接从result cache里获取想要的结果,省去了CPU、I/O上的开销,result cache位于shared pool里的某一块区域中,其大小可以通过resul...
揭秘自适应游标共享技术(Adaptive Cursor Sharing)
Adapter cursor sharing,自适应游标共享的引入是为了解决bind peeking在数据有明显倾斜的时候会生成次优执行计划的问题,Adapter cursor sharing使具有不同绑定变量值的SQL语句使用不同的执行计划成为可能。使用ACS前不得不提的两个概念:bind sensitive和bind aware,他们的状态体现在v$sql.is_bind_sensitive和v$sql.is_...
Deferred statistics publish-延迟统计信息发布功能介绍
Deferred statistics publish,延迟统计信息发布,将新生成的统计信息存放到一块临时的区域,供充分测试以验证统计信息对执行计划确有促进作用的情况下,再发布到数据字典供全局session使用,规避了因收集方法不当等原因引起统计信息不准确从而导致optimizer选择次优plan的问题---创建测试表drop table dsptest1;creat...
使用multicolumns statistics帮助Optimizer计算出更准确的cardinality
optimizer对于cardinality值的估算是否准确关系到能否生成最优的执行计划,而cardinality值估算的准确性又取决于SQL中各个对象的统计信息是否完整、是否能真实反映出对象的数据分布情况。因此使用何种方法收集统计信息是很有讲究的:对于数据倾斜度较大的表开启histogram,在此基础上如果有多个列存在相关性,那么multicolu...
如何让Not in语句跑出与not exists相当的效率
关于Not in和Not exists的讨论由来已久,not exists在性能上要优于not in,一时间几乎所有包含not in的select语句都被要求替换成not exists,那么not in是否真的那么实力不济,让我们静下心来细细的品味一下。 首先还是简要回顾一下与这个话题有关的基础知识,以select c1 from test1 where c1 not in (se...
11g Database Replay使用详解
Database Replay将生产系统上的负荷进行采集后还原到测试系统上进行重放,这个特性有助于我们在数据库升级、主机参数修改、数据库参数修改等重大变更实施前在测试系统上完全仿照生产系统的负荷进行全面的测试,量化评估出变更实施后对现有的性能的影响程度。Database Replay实施的流程是workload_capture->worklo...
sql plan baseline使用心得
测试内容:1、 dba_sql_plan_baselines表中和时间有关的四个字段CREATED,LAST_MODIFIED,LAST_EXECUTED,LAST_VERIFIED的变化规律2、 候选sql plan变为acceptedsql plan baseline的几种方法3、 SQL语句对应的sql plan baseline均失效的情况下Optimizer将新生成的执行计划演进为sql plan baseline的过程...
一次SQL Performance Analyzer的使用过程
数据库版本升级、变更系统参数前使用SQL Performance Analyzer可以衡量升级前后、参数变更前后SQL语句的执行性能是否有变化,以及这些变化对于整体性能的影响程度,对于性能恶化的sql语句结合SQL Tuning Advisor可是进一步实现调优,确保系统性能在升级或者参数变更后依然维持稳定。关于SPA的详细介绍可以参考” R...
常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较
说明:反映undo、redo占用量的统计指标是:undo change vector sizeredo size DDL/DML OperationsDirect-pathnologgingparallelnoarchivelog modearc...