如何查询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目录下) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |