暂无图片
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?
我来答
分享
Y
YanLang
2024-02-03
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?

oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
广州_老虎刘

楼上回答的第一句话是错误的. explain plan for不是用来查看已经执行过的SQL的执行计划,而是用来预估SQL的执行计划,SQL并没有执行.

已经执行过的SQL, 如果还在内存, 可以用select * from table(dbms_xplan.display_cursor())命令查看;  

如果保存到了awr,可以用select * from table(dbms_xplan.display_awr())命令查看; 

如果SQL被sql monitor捕获,也可以用select DBMS_SQLTUNE.REPORT_SQL_MONITOR() from dual;得到sql monitor显示形式的执行计划.

默认情况下, 执行计划显示的时间都是估算的,不能说完全不可信,大部分情况与实际相差较大. 

如果要调试SQL, 一般要先alter session set statistics_level=all,或者在sql 中使用 /*+ gather_plan_statistics */的hint, 再配合dbms_xplan.display_cursor方法,得到真实的每一步所花费的时间.

暂无图片 评论
暂无图片 有用 9
暂无图片
风行

在Oracle中,可以使用EXPLAIN PLAN FOR语句来查询已经执行过的SQL的执行计划。
在SQL执行过程中,每一步所花费的时间可以通过Oracle提供的执行计划来查看。执行计划是数据库优化器为SQL语句生成的一系列执行操作的顺序。通过查看执行计划,可以了解SQL语句的执行步骤、每个步骤的执行顺序以及每个步骤所花费的时间。

在Oracle中,可以使用EXPLAIN PLAN FOR语句来查看SQL语句的执行计划。执行计划会显示一系列的操作符,每个操作符表示一个执行步骤,并显示该步骤的名称、行数估算、成本等信息。通过分析这些信息,可以了解每个步骤所花费的时间,从而优化SQL语句的执行效率。

暂无图片 评论
暂无图片 有用 9
Thomas

第一次听说select * from table(dbms_xplan.display_awr())这样还能看执行计划。刘老师所言,都是干货和精华。

暂无图片 评论
暂无图片 有用 0
刘晓华
2024-02-06
本来就可以呀
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏