设为首页 收藏本站
查看: 7695|回复: 0

[经验分享] Oracle 执行计划

[复制链接]

尚未签到

发表于 2018-9-13 12:14:00 | 显示全部楼层 |阅读模式
  查看执行计划的方法:
  1.Explain Plan For SQL
  不实际执行SQL诧句,生成的计划未必是真实执行的计划
  必须要有plan_table
  2.SQLPLUS AUTOTRACE
  除set autotrace traceonly explain外均实际执行SQL,但仍未必是真实计划必须要有plan_table
  3.SQL TRACE
  需要启用10046戒者SQL_TRACE
  一般用tkprof看的更清楚些,当然10046里本身也有执行计划信息
  4.V$SQL和V$SQL_PLAN
  可以查询到多个子游标的计划信息了,但是看起来比较费劲
  5.Enterprise Manager
  可以图形化显示执行计划,但并非所有环境有EM可用
  6.其他第三方工具
  注意 PL/SQL developer之类工具F5看到的执行计划未必是真实的
  
  查看详细执行计划:
  alter session set STATISTICS_LEVEL = ALL; --不设置无法获得A-ROWS等信息
  如果输入NULL 则默认为之前运行的一条SQL,但注意要保持set serveroutput off,否则最后一句SQL将丌是你运行的SQL:
  alter session set STATISTICS_LEVEL = ALL;
  set serveroutput off;
  select * From DATA_SKEW_HB where source='Maclean Search';
  SQL> select * from TABLE(dbms_xplan.display_cursor('fk641nh8gjzvk',NULL,'ADVANCED +PEEKED_BINDS'));
  SQL> select * from table(dbms_xplan.DISPLAY_CURSOR(null, null, 'ALLSTATS'));
PLAN_TABLE_OUTPUT  
--------------------------------------------------------------------------------------
  
SQL_ID dyysbpz0y6aw2, child number 0
  
-------------------------------------
  
select * From DATA_SKEW_HB where source='Maclean Search'
  
Plan hash value: 2604078056
  
--------------------------------------------------------------------------------------------

  
|>  
--------------------------------------------------------------------------------------------
  
| 0 | SELECT STATEMENT | | 1 | | 2000 |00:00:00.02 | 4378 |
  
|* 1 | TABLE ACCESS FULL| DATA_SKEW_HB | 1 | 370 | 2000 |00:00:00.02 | 4378 |
  
--------------------------------------------------------------------------------------------

  
Predicate Information (identified by operation>  
---------------------------------------------------
  
1 - filter("SOURCE"='Maclean Search')
  
alter session set STATISTICS_LEVEL = TYPICAL;
  
E-Rows 是优化器评估返回的行数
  
A-Rows 是实际执行时返回的行数
  
  格式:
  ALLSTATS IOSTATS + MEMSTATS
  IOSTATS 显示该游标累计执行的IO统计信息(Buffers, Reads)
  MEMSTATS 累计执行的PGA使用信息(Omem 1Mem Used-Mem)
  LAST 仅显示最后一次执行的统计信息
  Advanced 显示outline、Query Block Name、 Column Projection等信息
  PEEKED_BINDS 打印解析时使用的绑定变量
  Typical 丌打印PROJECTION, ALIAS 组合使用的方式如下,注意每个关键词后面要加空格
  例如 ‘typical +peeked_binds’ => work ‘typical+peeked_binds’ => Error: format 'TYPICAL+peeked_binds' not valid for DBMS_XPLAN
  推荐格式:
  ALTER SESSION SET STATISTICS_LEVEL=ALL;
  select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));
  父子游标
  使用脚本查询SQL_ID
  select sql_id,sql_text from v$SQL Where
  sql_text not like '%like%'
  and sql_text like '%$SQL%'; --$SQL处填入你的SQL的文本
  为了避免你的SQL和其他SQL混在一起,考虑增加一个注释 例如
  Select /* MACLEAN_TEST_PLAN_1 */ * from MAC;
  如果你之前执行过该诧句,那么为了引发该诧句的再次硬解析,对注释略作修改,例如上面的 PLAN_1 改为PLAN_2
  父游标所在
  Select * from v$SQLAREA where SQL_ID=%YOUR_SQL_ID%;
  子游标:执行计划和优化环境
  Select * from v$SQL where SQL_id=%YOUR_SQL_ID%;
  计划:
  Select * from v$SQL_PLAN where SQL_id=%YOUR_SQL_ID%;
  优化环境:
  Select * from v$SQL_OPTIMIZER_ENV where SQL_id=%YOUR_SQL_ID%;
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-578110-1-1.html 上篇帖子: ORACLE实现字段自增 下篇帖子: 结合JDBC和Oracle ROWNUM实现分页查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表