获取执行计划

处理执行计划需要采取以下三步:获取、解释、判定效率

获取执行计划:
-执行SQL语句EXPLAIN PLAN,然后查询结果输出表
-查询一张动态性能视图,它显示缓存在库缓存中的执行计划
-查询自动工作量资料库(Automatic Workload Repository)或查询Statspack表,它显示存储在资料库中的执行计划
-启动提供执行计划的跟踪功能

SQL语句EXPLAIN PLAN
-通过它可以询问优化器,对给定的SQL语句会采用怎么样的执行计划
explain plan for select count(*) from user_objects
-计划表
存储EXPLAIN PLAN 语句输出的地方
-查询计划表
select * from table(dbms_xplan.display)

动态性能视图
-v$sql_plan提供最基础的信息,和计划表相同,主要包括执行计划和查询优化器提供的一些相关信息。
-v$sql_plan_statistics为v$sql_plan视图中的每一个操作提供了运行统计信息,诸如用掉的时间和产生的记录数
-v$sql_workarea 视图提供了用来执行游标的内存工作区域的信息,它给出运行时内存的使用情况和高效地执行此操作所需内存评估信息
-v$sql_plan_statistics_all 以上三个视图连接视图

识别子游标
select status,sid,sql_id,sql_address,sql_hash_value,sql_child_number from v$session where username='TEST'

查询SQL内容
select * from v$sql where sql_text like '%user_object%'

使用dbms_xplan.display_cursor查询动态性能视图
select * from table(dbms_xplan.display_cursor('bfk14r63uu5n6',0));

AWR & Statspack

存储在AWR中的执行计划可以通过视图dba_hist_sql_plan得到

显示AWR执行计划
select * from table(dbms_xplan.display_awr('SQL_ID'));

10053事件跟踪SQL执行
打开:alter session set events '10053 trace name context forever'
关闭: alter session set events '10053 trace name context off'

10132事件
-包含每个硬解析相关的执行计划
打开:alter session set events '10053 trace name context forever'
关闭: alter session set events '10053 trace name context off'
数据库级
打开: alter system set events '10053 trace name context forever'
关闭: alter system set events '10053 trace name context off'

display函数参数
-tablename
-statement_id
-format指定提供那些内容
--basic仅显示最少的信息,基本上只包括操作和操作的对象
--typical显示大部分相关内容,基本上包括除了别名,提纲和字段投影外的所有信息
--serial和typical类似
--all 显示除了提纲外的所有信息
--advanced 显示所有信息
--alias控制包含查询块名和对象别名那一部分的显示
--bytes控制执行计划中字段Bytes的显示
--cost控制执行计划中字段cost的显示
--note控制包含注意信息那一部分的显示
--outline控制包含提纲那一部分的显示
--parallel控制并行处理的显示
--partition控制分区信息的显示
--peeked_binds控制包含被窥测的绑定变量那一部分的显示
--predicate控制包含谓词filter和access那一部分的显示
--project控制包含投影信息那一部分的显示
--remote控制远程执行的SQL语句的显示
--rows控制执行计划中字段Rows的显示
select * from table(dbms_xplan.display(NULL,NULL,'basic'));

display_cursor函数
-sql_id
-cursor_child_no
-format
--allstats iostats memstats的书捷方式
--iostats*控制IO统计的显示
--last*只显示最后一次执行的统计信息
--memstats*控制PGA相关统计的显示
--runstats_last和iostats last相同
--runstats_tot 的iostats相同
select * from table(dbms_xplan.display_cursor(NULL,NULL,'iostats last'));

display_awr函数
-sql_id
-plan_hash_value
-db_id
-format 与display函数中的format取值相同
select * from table(dbms_xplan.display_awr('SQL_ID',hash_value,NULL,'basic'));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值