最权威Oracle获取SQL语句执行计划大全(二)

2015-07-16 12:09:00 · 作者: · 浏览: 3
xt fromDBA_SQLSET_STATEMENTS where upper(sql_text)


like 'SELECT * FROM TEST%';


SQL>select * fromtable(dbms_xplan.display_sqlset('STS_6','abcdefg',null,'BASIC ROWS COST'));


--注:


1.DISPLAY_SQLSET函数显示存储在一个SQL调优集中的语句的执行计划。


2.参数:


1)SQLSET_NAME:SQL 集的名称。每个SQL 集都有一个单独的名称(可在创建时


用户指定,也可系统自动生成),需指定从哪个SQL集中读取和显示语句的执行计划,该参数没有默认值,必须指定;


2)SQL_ID :可从USER/DBA/ALL_SQLSET_PLANS.SQL_ID获得,该参数必须指定非空值,没有默认值;


3)PLAN_HASH_VALUE:如果未指定或为NULL,则会显示语句的所有执行计划;


4)FORMAT:格式化控制字符串。与DISPLAY的FORMAT 选项相同;


5)SQLSET_OWNER:SQL集的所有者,默认为当前用户名。


5)DISPLAY_SQL_PLAN_BASELINE


SQL>select * fromtable(dbms_xplan.display_sql_plan_baseline(sql_handle =>


'SYS_SQL_66cc81707e560a32'));


--注:


1.DISPLAY_SQL_PLAN_BASELINE 函数显示存储在数据字典当中SQL 执行计划基线的计划。


2.参数:


1)SQL_HANDLE:执行计划基线所属SQL的句柄名称,由Oracle在创建或载入执行计划到基线当中时自动生成,可以通过视图dba_sql_plan_baselines查询,默认为NULL;


2)PLAN_NAME :执行计划基线中某个执行计划的名称,由Oracle 创建或载入执行计划到基线当中时自动生成,可以通过视图dba_sql_plan_baselines查询,默认为NULL;


3)FORMAT :格式化控制字符串。DISPLAY_SQLSET 函数的格式化选项与DISPLAY


的选项相同。


4)当SQL_HANDLE和PLAN_NAME 都为空时,显示所有基线数据中的全部执行计划。


?


3、AUTOTRACE


1)配置test用户使用autot


SQL>conn sys/sys as sysdba


SQL>@?/SQLPLUS/ADMIN/PLUSTRCE.SQL


SQL>grant plustrace totest;


2)使用方法


1.SET AUTOTRACE ON:打开AUTOTRACE,并输出所有内容,包括语句本身的查询结果、执行计划,以及性能统计数据。


2.SET AUTOTRACE ON EXPLAIN :打开AUTOTRACE,并输出语句本身的查询结果和执行计划,不输出性能统计数据。


3.SET AUTOTRACE ON STATISTICS :打开AUTOTRACE,并输出语句本身的查询结果和性能统计数据,不输出执行计划。


4.SET AUTOTRACE TRACE :打开AUTOTRACE,并输出执行计划和性能统计数据,不输出语句本身的查询结果。


5.SET AUTOTRACE TRACE EXPLAIN :打开AUTOTRACE,并输出执行计划,不输出语句本身的查询结果和性能统计数据。


6.SET AUTOTRACE TRACESTATISTICS:打开AUTOTRACE,并输出性能统计数据,不输出语句本身的查询结果和执行计划。


7.SET AUTOTRACE OFF:关闭AUTOTRACE。


?


4、其他方法


1)SQL_TRACE(或者10046 跟踪事件):该方法会在跟踪文件里显示执行计划及相关统计信息:


SQL>alter session set sql_trace=true;


SQL>select * from t_users where user_id=’TEST’;


SQL>alter session set sql_trace=false;


SQL>select distinct spid from v$process p,v$session s, v$mystat m where p.addr=s.paddr and s.sid=m.sid;


SQL>show parameter user_dump_dest


SQL>ed/home/oracle/admin/ora10g/udump/ora10g_ora_sid.trc


2)OPTIMIZER_TRACE(或者10053 跟踪事件):该方法会在跟踪文件里记录优化器分析选择执行计划的过程:


SQL>alter session set"_optimizer_trace"=ALL;


SQL>explain plan for select * from t_users whereusername=’TEST’;


SQL>alter session set"_optimizer_trace"=NONE;


SQL>select distinct spid from v$process p,v$session s, v$mystat m where p.addr=s.paddr and s.sid=m.sid;


SQL>ed/home/oracle/admin/ora10g/udump/ora10g_ora_sid.trc