10046事件:获取最完整的sql执行计划
2015-09-29 17:01
369 查看
相信很多人都很清楚使用explain plan命令、dbms_xplan包、autotrace开关可以获取执行计划,但是如果还需要获取更为详细的执行计划,我们可以使用10046事件来获取。
而要通过10046事件来获取目标sql的执行计划,通常需要三个步骤:
1、在当前的会话(session)中激活10046事件;
2、在当前session中执行目标sql;
3、在当前session中关闭10046事件;
激活10046事件的命令有以下两种:
第一种: alter session set events '10046 trace name context forever,level 12'
第二种: oradebug event 10046 trace name context forever,level 12
对应的,关闭10046事件的命令也有两种:
第一种: alter session set events '10046 trace name context off'
第二种: oradebug event 10046 trace name context off
下面以一个示例做示范(强调一点:必须在sys用户下):
1、在sys用户下,先准备对当前会话(session)使用oradebug;
SQL> oradebug setmypid;
已处理的语句
2、在当前session中激活10046事件;
SQL> oradebug event 10046 trace name context forever,level 12;
已处理的语句
3、在当前session中执行目标sql,生成对应的trace文件;
SQL> select empno,ename,dname from scott.emp,scott.dept where emp.deptno=dept.deptno;
4、查看步骤3中生成的trace文件的路径;
SQL> oradebug tracefail_name;
d:\app\zl\diag\rdbms\orcl\orcl\trace\orcl_ora_4352.trc
5、在当前session中关闭10046事件;
SQL> oradebug event 10046 trace name context off;
已处理的语句
下面是生成的trace文件的部分截图:
可以很明显的看出来,这样的执行计划很不方便查看,所以我们需要用tkprof命令来翻译,上述得到的trace文件;
tkprof的命令如下:
C:\Users\zl>tkprof d:\app\zl\diag\rdbms\orcl\orcl\trace\orcl_ora_4352.trc e:\orcl_ora_4352.trc
TKPROF: Release 11.2.0.1.0 - Development on 星期二 9月 29 16:11:41 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
下面是新生成的trace文件的截图:
现在的执行计划就很直观、易懂了
而要通过10046事件来获取目标sql的执行计划,通常需要三个步骤:
1、在当前的会话(session)中激活10046事件;
2、在当前session中执行目标sql;
3、在当前session中关闭10046事件;
激活10046事件的命令有以下两种:
第一种: alter session set events '10046 trace name context forever,level 12'
第二种: oradebug event 10046 trace name context forever,level 12
对应的,关闭10046事件的命令也有两种:
第一种: alter session set events '10046 trace name context off'
第二种: oradebug event 10046 trace name context off
下面以一个示例做示范(强调一点:必须在sys用户下):
1、在sys用户下,先准备对当前会话(session)使用oradebug;
SQL> oradebug setmypid;
已处理的语句
2、在当前session中激活10046事件;
SQL> oradebug event 10046 trace name context forever,level 12;
已处理的语句
3、在当前session中执行目标sql,生成对应的trace文件;
SQL> select empno,ename,dname from scott.emp,scott.dept where emp.deptno=dept.deptno;
4、查看步骤3中生成的trace文件的路径;
SQL> oradebug tracefail_name;
d:\app\zl\diag\rdbms\orcl\orcl\trace\orcl_ora_4352.trc
5、在当前session中关闭10046事件;
SQL> oradebug event 10046 trace name context off;
已处理的语句
下面是生成的trace文件的部分截图:
可以很明显的看出来,这样的执行计划很不方便查看,所以我们需要用tkprof命令来翻译,上述得到的trace文件;
tkprof的命令如下:
C:\Users\zl>tkprof d:\app\zl\diag\rdbms\orcl\orcl\trace\orcl_ora_4352.trc e:\orcl_ora_4352.trc
TKPROF: Release 11.2.0.1.0 - Development on 星期二 9月 29 16:11:41 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
下面是新生成的trace文件的截图:
现在的执行计划就很直观、易懂了
相关文章推荐
- 清除缓存和数据库的工具类
- Ubuntu Linux下安装Oracle JDK
- Oracle当前时间与数据库时间进行计算
- oracle数据库中,实例、表空间、用户、方案、表、数据的关系例子
- MongoDB使用中的一些问题
- MYSQL主从同步故障一例及解决过程!
- oracle中的to_char数字转换为字符串格式
- php 链接数据库函数实例代码
- mysql Xtrabackup备份
- MYSQL group by 分组后只取最大、最小值对应的记录方法
- mysql innodb_force_recovery的各个恢复级别的参数说明
- oracle复合索引的选择和使用
- Oracle: Network Waits
- C#使用DataTable传递数据减少数据库访问打开关闭次数
- NavicatforMySQL 数据导入从excel导入数据到mysql
- mysql拒绝访问
- MariaDB,MySQL中存储过程的学习笔记
- win7 下如何完全卸载oracle
- oracle中sql执行性能关注点
- Oracle的基本查询