查看oracle的执行计划

oracle 常用有下面7种读取执行计划的方法,图太丑建议复制出来看

序号方法简介SQL语句是否真实执行过是否真实执行计划特性物理\逻辑读\递归调用运行时间处理行数表访问次数等待事件解析时间
1explain plan存储在计划表中的执行计划(默认plan_table)计划表
2set autotraceSET AUTOTRACE OFF此为默认值,即关闭AUTOTRACE         
SET AUTOTRACE ON包含SQL语句的执行结果、SQL语句执行结果的数量、执行计划和统计信息内容 
SET AUTOTRACE ON EXPLAIN包含SQL语句的执行结果、SQL语句执行结果的数量和执行计划 
SET AUTOTRACE ON STATISTICS包含SQL语句的执行结果、SQL语句执行结果的数量和统计信息内容 
SET AUTOTRACE TRACEONLY包含SQL执行结果的数量、执行计划和统计信息内容,但不显示SQL语句的执行结果 
SET AUTOTRACE TRACEONLY EXPLAIN同EXPLAIN PLAN命令,对于SELECT语句不会执行,只显示目标SQL的执行计划,但是对于DML语句还是会执行的,而且显示SQL语句执行结果的数量和执行计划DQL,DML 
SET AUTOTRACE TRACEONLY STATISTICS显示SQL语句执行结果的数量和统计信息,不显示执行计划和SQL执行结果DQL,DML 
3DBMS_XPLANDBMS_XPLAN.DISPLAYEXPLAIN PLAN FOR SQL语句;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL,NULL,'ADVANCED'));
不确定计划表
DBMS_XPLAN.DISPLAY_CURSOR('kɜːsə)ALTER SESSION SET STATISTICS_LEVEL=ALL ;库存中的游标缓存
执行SQL SELECT /*+ GATHER_PLAN_STATISTICS*/ …
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('&SQLID',0,'BASIC LAST ALLSTATS ADVANCED'));
DBMS_XPLAN.DISPLAY_CURSOR没有设置STATISTICS_LEVEL=ALL或没有使用/*+ GATHER_PLAN_STATISTICS*/的Hint:
SELECT  * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('&SQLID')); --从内存得到执行计划
DBMS_XPLAN.DISPLAY_AWRDISPLAY_AWR函数显示存储在AWR历史数据的执行计划。SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('&SQLID'));AWR仓库基表WRH$SQL_PALN
DBMS_XPLAN.DISPLAY_SQLSETDISPLAY_SQLSET函数显示存储在一个SQL调优集中的语句的执行计划,SQL调优集查询DBA_SQLSET_STATEMENTS,查询执行计划的SQL语句为:SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQLSET('&SQLSET','&SQLID',NULL,'BASIC ALLSTATS ADVANCED'));SQL set视图
DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINEDISPLAY_SQL_PLAN_BASELINE函数显示存储在数据字典当中SQL执行计划基线的计划。执行计划基线所属SQL的句柄名称(SQL_HANDLE)可以通过视图DBA_SQL_PLAN_BASELINES查询,查询执行计划的SQL语句为:SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(SQL_HANDLE => )); 
4SQL_TRACE、事件10046、10053跟踪1(传统方法)step 1 ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT  FOREVER,LEVEL 12';
step 2
执行SQL语句
step 3 ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
step 4 TKPROF
格式化TRACE文件
 
2 dbms_support
3 dbms_monitor
step 1 dbms_monitor.session_trace_enable(session_id>=123,serial_num=123456,waits=true,binds=false);
dbms_monitor.session_trace_disable(session_id>=123,serial_num=123456)

5awrsqrpt.sql@?/rdbms/admin/awrsqrpt.sql 
SELECT OUTPUT FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(V_DBID,V_INST_ID,V_MIN_SNAP_ID,V_MAX_SNAP_ID,V_SQLID));
6SQL实时监控特性:DBMS_SQLTUNE.REPORT_SQL_MONITORSELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR('&SQLID') FROM DUAL ; 
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_ID=>'&SQLID',TYPE=>'ACTIVE',REPORT_LEVEL=>'ALL') AS REPORT FROM DUAL;
7v$sqlv$sql_planselect * from v$sql_plan where sql_id='xxxxxxx'来自数据字典,不是很直观故不太常用111111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值