查看Oracle数据库中的执行计划

前端之家收集整理的这篇文章主要介绍了查看Oracle数据库中的执行计划前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

 

1、set autotrace traceonly命令

 

2、explain plan for命令

 1)explain plan for select * from dual; 

 2)select * from table(dbms_xplan.display);  

3、10046查看Oracle数据库中的执行计划

能够得到sql执行计划中每一个执行步骤所消耗的逻辑读,物理读,和花费的时间。实际上,也可以通过gather_plan_sstatistics Hint 配合dbms_xplan 包一起使用得到和10046事件类似细粒度的明细的执行计划。

三个步骤就可以通过10046事件获得sql的执行计划。

1.首先在当前session 中激活10046事件。
2.在当前session 中执行sql语句。
3.最后当前session 中关闭10046事件。
 当执行完上述步骤后,oracle就会将目标sql的执行计划和明细资源消耗写入此session对应的trace文件中。
oracle会在user_dump_dest参数设置的目录下产生这个trace文件
 我们有两种方法在当前session中激活10046事件。
1.在当前session中执行alter session set events ‘10046 trace naem context forever,level 12‘
 2.在当前session中执行oradebug event 10046 trace name context forever,level 12‘
上述命令中的关键字”level“后的数字是标识设置的10046时间的level值,这个值是可以修改的,我们
 通常使用的值为12,表示在产生的trace文件中除了有目标sql的执行计划和资源消耗明细外,还包含
sql使用的绑定变量的值以及该session所经历的等待事件,除了level值外,其他的部分是固定的语法,
 是无法修改的。
 我推荐使用第2种方法,因为可以在激活10046事件后执行命令oradebug tracefile_name可以获得当前
session 所对应的trace文件的具体路径名称
 示例:

1.我们先激活10046事件,我们是oradebug命令来激活。sql>oradebug setmypid sql>oradebug event 10046 trace name context forver,level 12 2.在当前session中激活了10046事件后,我们执行一个sql语句sql>SELECT * FROM hr.test; 3.使用oradebug tracefile_name 命令查看当前session所对应的trace文件路径和名称sql>oradebug tracefile_name /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc 4.关闭当前session 中的10046事件:sql>oradebug event 10046 trace name context off

猜你在找的Oracle相关文章