如何查询oracle执行计划_总结

前端之家收集整理的这篇文章主要介绍了如何查询oracle执行计划_总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

第一种:explainplan命令(plsqldevoloper中的F5键在内部也是调用的此命令)

用法:依次执行以下语句

explainplanfor目标sql

select*fromtable(dbms_xplan.display);

第二种:使用dbms_xplan包

(1)select*fromtable(dbms_xplan.display);

与explainplan命令配合使用

(2)select*fromtable(dbms_xplan.display_cursor(null,null,'advanced'));

sqlplus中查看刚刚执行

(3)select*fromtable(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number,'advanced'));

查看指定sql的执行计划

(4)select*fromtable(dbms_xplan.display_awr('sql_id'));

用于查看指定sql的所有历史执行计划

第三种:sqlPLUS中的autotrace开关

SETAUTOTRACEOFF(默认值)(等价于SETAUTOTOFF)

SETAUTOTRACEON(等价于SETAUTOTON)

SETAUTOTRACETRACEONLY不显示执行sql的结果)(等价于SETAUTOTTRACE)

SETAUTOTRACETRACEONLYEXPLAIN(只显示sql执行计划)(等价于SETAUTOTTRACEEXP)

SETAUTOTRACETRACEONLYSTATISTICS(只显示sql资源消耗量)(等价于SETAUTOTTRACESTAT)

第四种:10046事件

查看目标sql执行计划的一种方法,和上面三种方法的不同之处在于,此方法得到的执行计划明确显示了目标sql实际执行计划中每一步骤所消耗的逻辑读、物理读和花费的时间。

使用以下三个步骤来执行10046事件:

(1)首先在当前session中激活10046事件

(2)在此session中执行目标sql

(3)在此session中关闭10046事件

上面步骤执行完后,相关数据写入trace文件

trace文件存放于USER_DUMP_DEST中

trace文件的格式为“实例名_ora_当前session的spid.trc”

激活10046的方法,一般有以下两种:

--altersessionsetevents'10046tracenamecontextforever,level12'

--oradebugevent10046tracenamecontextforever,level12

推荐使用oradebug方式,此方式可以在激活10046事件后oradebugtracefile_name来得到trc文件的目录和名称

关闭10046事件的方法为:

--altersessionsetevents'10046tracenamecontextoff'

--oradebugevent10046tracenamecontextoff

需要使用tkprof来格式化trc文件(tkprof命令位于$ORACLE_HOME/BIN目录下)

猜你在找的Oracle相关文章