oracle案例:分析10053跟踪文件
2008-12-31 13:07:56 来源:WEB开发网3. 案例历史
执行一个未使用提示的sql语句(一个包含3种连接的select语句)需要9个小时,而如果使用"NO_INDEX"提示,将会在4分钟内执行完。表使用的是分区表,而且用到了并行查询。另外,用户将"OPTIMIZER_INDEX_CACHING"设置为70(不知用户为什么这么做,我们猜测可能是因为当时他们并没有得到想要的执行计划才这么做)。此参数设置效果可以使单块索引I/O下降70%。
使用10053跟踪,获取未加提示(“不好的”)的执行计划与加提示(“好的”)的执行计划。两个执行计划的主要不同点是,未加提示的执行计划使用nested嵌套循环连接方式,内层连接使用的是INDEX FULL SCAN(不是index fast full scan)操作来作为内层行集。加提示的执行计划使用哈希连接,INDEX FAST FULL SCAN (IFF)操作的结果集作为内层行集。
注意,就本案例而言,新版本中使用10053产生的跟踪文件可能会发生很大变化。
一般而言,新版本的跟踪文件比较容易阅读,在"预分析工作"部分需要做的工作较少。
4. 预分析工作
在开始分析跟踪文件前,我们首先进行一些观测,了解一些CBO计算成本时的有关因素。有时,这些参数和因素的值会很好的告诉我们,为什么从诸多执行计划中选择了特定的执行计划。
要收集10053事件的跟踪文件,可以在sqlplus中使用下面的语法命令:
SQL> connect / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug event 10053 trace name context forever, level 1
SQL> ...enter your query here...
SQL> oradebug event 10053 trace name context off
SQL> oradebug tracefile_name
/chia/web/admin/PTAV3/udump/ptav3_ora_15365.trc
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接