首页 > 数据库 > Oracle > SQL执行计划查看方法
六种常用的sql执行计划查看
explain play DBMS_XPLAN包 sqlplus 中set autot 10046 10053 awr或者statspack报告
一、explain play
PL/SQL中的F5键
explain plan for sql语句
select * from table(dbms_xplan.display)
explain plan for 后将执行计划写入了plan_table$中, select * from table(dbms_xplan.display)就是将具体的步骤以格式化的形式写出来
二、dbms_xplan包
select * from table(dbms_xplan.display) 执行完 explain plan for sql语句 后可以用这个直接查询
select * from table(dbms_xplan.display_cursor(null,null,'advanced')); 执行完某sql ,可以紧接着执行这条来查看执行计划
select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number,'advanced')); 查看指定 sql_id/hash_value的执行计划
select * from table(dbms_xplan.display_awr('sql_id')); 查看指定sql_id的历史执行计划,前面2和3需要执行计划还是share pool里,才能采集到,如果已经清空或者age out 出了share pool,则只能通过这个方法,从awr repository中得到执行计划
三、set autot
set autot on
set autot trace
set autot trace exp
set autot trace stat
set autot off
四、10046与tkprof
与上面三种相比,10046明确了sql实际执行计划中每一步的逻辑读,物理读和花费的时间
步骤
1、激活10046事件 alter session set events '10046 trace name context forever,level 12'; 或oradebug event 10046 trace name context forever,level 12;
2、执行sql
3、关闭10046事件 alter session set events '10046 trace name context off' 或 oradebug event 10046 trace name context off;
上面四种办法的前三种,得出的执行计划有可能是不准的
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26031282/viewspace-2664853/ ,如需转载,请注明出处,否则将追究法律责任。