随笔 - 404  文章 - 4  评论 - 0  阅读 - 25万

查看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

 

5.生成TKPROF报告

然后键入 tkprof /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc /tmp/tk.prf

posted on   HelonTian  阅读(1350)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示