查看执行计划6种方法

阅读更多

1,10046 trace

   执行步骤: 一 oradebug setmypid;

                   二 oradebug event 10046 trace name context forever,level 12;

                   三 在当前session中执行SQL语句

                   四 关闭当前session中的10046事件:oradebug event 10046 trace name context off;

                   五 oradebug tracefile_name查看生成的trace文件的完整路径

2,explain plan for  注意事项:一 能触发oralce的硬解析 但未必是真实的执行计划

                                                      二 要有plan_table

      执行步骤:一 exlpain plan for +sql语句

              二 查询plan_table :select plan_table_output from table(dbms_xplan.display('PLAN_TABLE'));

3 ,SQLPLUS trace 

         autotrace命令 具体命令如下:

         1 set autotrace off 此为默认值 即关闭autotrace

          2 set autotrace on explain  只显示执行计划

          3 set autotrace on statistics  只显示统计信息

          4 set autotrace on 包含 2 ,3 两项

          5 set autotrace traceonly 与on相似,但不展示具体执行SQL语句的执行结果

   执行步骤:一 执行 autotrace命令

                二 执行 sql语句

4 v$SQL v$SQL_PLAN 可以查到多个子游标 但看起来比较费劲

 

5 Enterprise Manager  可以图形化显示执行计划 但并不是所有的环境都有 EM可用

 

6 其他第三方工具PL/SQL 按F5可以查询执行计划 未必是真实的执行计划

 

最靠谱的查看执行计划:DBMS_XPLAN包

  使用如下方法: DISPLAY DISPLAY_CURSOR DISPLAY_AWR DISPLAY_PLAN DISPLAY_SQL_PLAN_BASELINE DISPLAY_SQLSET

查看解释计划:

    explain plan for +SQL

    select *  from dbms_xplan.display

查看执行计划:

   在command窗口执行 SQL

   select sql_id,child_number,sql_text from v$sql where sql_text like '%sql_text%';

   select * from table(dbms_xplan.display_cursor(sql_id,childnumber,format)); //注意在执行sql时要想在看执行计划的A-ROWS,A-TIMES,BUFFER信息 就要在 执行SQL时加 hint 信息/*+gather_plan_statistics*/

format信息 如下

 

1.BASIC: 显示最少的信息,只包括操作类型,ID名称和选项。
2.TYPICAL: 默认值,显示相关信息以及某些附加的显示选项,如分区和并发使用等。
3.SERIAL: 与TYPICAL类型相似,区别是它不包括并发的信息,即使是并行执行的计划。
4.ALL: 显示最多的信息,包含了TYPICAL的全部以及更多的附加信息,如别名和远程调用等。

除了以上的基本的四种输出格式外,format还有一些附加的选项可用于定制化输出行为,使用中可以通过逗号和空格分隔来声明多个关键字,同时可以使用”+”和”-”符号来包含或排除相应的显示元素,这些附加的选项在官档中也有记载:

1.ROWS – 显示被优化器估算的记录的行号
2.BYTES – 显示优化器估算的字节数
3.COST – 显示优化器计算的成本信息
4.PARTITION – 显示分区的分割信息
5.PARALLEL – 显示并行执行信息
6.PREDICATE – 显示谓语
7.PROJECTION – 显示列投影部分(每一行的那些列被传递给其父列已经这些列的大小)
8.ALIAS – 显示查询块名称已经对象别名
9.REMOTE – 显示分布式查询信息
10.NOTE – 显示注释
11.IOSTATS – 显示游标执行的IO统计信息
12.MEMSTATS – 为内存密集运算如散列联结,排序,或一些类型的位图运算显示内存管理统计信息
13.ALLSTATS – 与'IOSTATS MEMSTATS'等价
14.LAST – 显示最后执行的执行计划统计信息,默认显示为ALL类型,并且可以累积

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(查看执行计划6种方法)