重庆思庄Oracle、Redhat认证学习论坛

标题: 10046 与tkprof规范Trace文件工具 [打印本页]

作者: 王硕    时间: 2016-3-11 16:47
标题: 10046 与tkprof规范Trace文件工具
在ORACLE数据库里,我们通常可以使用如下这些方法(包括但不限于)得到目标SQL的执行计划:
1,explain plan
2,DBMS_XPLAN包
3,SQLPLUS中的AUTOTRACE开关
4,10046事件
5,10053事件
6,AWR报告或者STATSPACK报告
前面的四种方法比较普遍。

下面我来介绍下第四种即10046事件如何得到目标SQL的执行计划
10046与使用explain plan命令,DBMS_XPLAN包和AUTOTRACE开关的不同之处在于,所得到的执行计划中明确显示了目标SQL的实际执行计划中每一个步骤所消耗的逻辑度(cr:consistent read),物理读(pr:physical read)和花费的时间(time)。
用10046事件得到的目标SQL的执行计划只需要依次执行下面三步:
执行完上面的步骤后,ORACLE会将目标SQL的执行计划和明细资源消耗写入此SESSION对应的TRACE文件中,此文件一把会在USER_DUMP_DEST目录下,其命名格式是: 实例名_ora_当前SESSION的SPID.trc.

通常可以用下面两种方法激活10046事件:
本人偏向喜欢用第二中,因为可以在激活10046事件后,执行命令oradebug tracefile_name来得到当前SESSION所对应的trace文件的具体路径和名称
对应的在当前SESSION中关闭10046事件的方法为:
10046生成的TRACE文件,我们称之为裸文件(raw trace),ORACCLE 提供了工具TKPROF来查看他。下面我们来做一个实验来演示如何通过10046事件来获取和查看目标SQL的实际执行计划

下面我以目标SQL: "select empno,ename,dname from scott.emp,scott.dept where emp.deptno=dept.deptno" 为例子来说明10046事件和TKPROF的用法


作者: 王硕    时间: 2016-3-11 16:57
OK下面进行测试
126656e2880b1a786.png
登录/注册后可看大图