设为首页 加入收藏

TOP

最权威Oracle获取SQL执行计划大全(二)
2015-07-24 12:19:18 来源: 作者: 【 】 浏览:112
Tags:权威 Oracle 获取 SQL 执行 计划 大全
:格式化控制字符串。与DISPLAY的相同选项类似。

4)DISPLAY_SQLSET

SQL>declare

ss_name varchar2(60);

begin

ss_name :=dbms_sqltune.create_sqlset();

dbms_sqltune.capture_cursor_cache_sqlset(ss_name,600,100);

dbms_output.put_line(ss_name);

end;

/
SQL>select sqlset_name,sql_id,sql_text 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

?

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[ORACLE]管理方面的脚本收集 下一篇oracle查看表空间的属性,修改表..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: