查看执行计划常用方法
1)explain plan命令 2)DBMS_XPLAN包 3)AUTOTRACE开关 4)10046事件 5)10053事件 6)AWR SQL报告 |
1、 explain plan(相当于PL/SQL的F5)
explain plan for select * from dual; select * from table(dbms_xplan.display); |
注:相关表plan_table$是一个on commit preserve rows的global temporary table。
2、 DBMS_XPLAN包
方法1:配合explain plan使用
explain plan for select * from dual; select * from table(dbms_xplan.display); |
方法2:跟在执行语句后面,‘advanced’比‘all’多显示了“Outline Data”内容
set linesize 800 set pagesize 900 col plan_table_output for a200 select * from table(dbms_xplan.display_cursor(null,null,'advanced')); |
方法3:只要目标SQL的执行计划所在的Child Cursor还没有被age out出Shared Pool,就可以使用该方法查看SQL执行计划
select sql_text, sql_id, hash_value, child_number from v$sql where sql_text like 'select count(*) from sh.customers%';
select * from table(dbms_xplan.display_cursor('sql_id/hash_value', child_cursor_number,'advanced')); |
方法4:用于查看指定SQL的所有历史执行计划,没有谓词信息
--目标SQL可能有多个Child Cursor,即多个执行计划 select sql_text, sql_id, version_count, executions from v$sqlarea where sql_text like 'select count(*) from sh.customers%';
select * from table(dbms_xplan.display_awr('sql_id')); |
注:Oracle把执行计划采样数据从V$sql_plan搬到AWR Repository基表wrh$_sql_plan中没有保留谓词信息的记录。
3、 AUTOTRACE开关
可以额外观察到目标SQL执行时所耗费的物理读、逻辑读、产生redo数量以及排序的数量。(statistics)
set outotrace on; set outotrace off; set outotrace traceonly;--不现实SQL执行结果 set outotrace traceonly explain; set outotrace traceonly statistics;
|
4、 10046事件与tkprof命令
明确显示了目标SQL实际执行计划中每一个执行步骤所消耗的逻辑读、物理读和花费的时间。(在USER_DUMP_DEST目录下生成trace文件。)
--打开
alter session set events '10046 trace name context forever,level 12';
oradebug event 10046 trace name context forever,level 12;
--关闭
alter session set events '10046 trace name context off';
oradebug event 10046 trace name context off;
注:level 12表示trace文件中还包含目标SQL所使用的绑定变量的值以及该session所经历的等待事件。
--操作步骤--
a、SQL> oradebug setmypid; b、SQL> oradebug event 10046 trace name context forever,level 12; c、SQL> select count(*) from dual; d、SQL> oradebug tracefile_name; /oracle/app/oracle/diag/rdbms/test/test/trace/test_ora_4288.trc e、SQL> oradebug event 10046 trace name context off; f、[oracle@test ~]$tkprof /oracle/app/oracle/diag/rdbms/test /test/trace/test_ora_4288.trc /oracle/test_ora_4288_tkprof.trc |
5、 10053事件
6、 AWR SQL报告、Statspack报告
7、 一些现成的脚本(如display_cursor_9i.sql)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27126919/viewspace-1688233/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27126919/viewspace-1688233/