题目 部分

在Oracle中,如何获取SQL历史执行计划?

答案部分

历史执行计划只能从AWR中获取,如果AWR没有记录的话,那么就无法获取历史执行计划了,获取历史执行计划的命令如下所示:

1SELECT  * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('&sqlid'));SELECT  * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('&sqlid'));

对于历史计划,可以生成SQL报告,命令如下所示:

1SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(L_DBID => , L_INST_NUM => , L_BID => , L_EID => , L_SQLID => )) ;SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(L_DBID => , L_INST_NUM => , L_BID => , L_EID => , L_SQLID => )) ;

其中,L_DBID代表数据库的DBID,L_INST_NUM代表数据库的实例号,单机环境为1,RAC环境填写具体的实例号,L_BID为开始的快照号,L_EID为结束的快照号,L_SQLID为要查看SQL的SQL_ID。

下面的例子可以直接从AWR中获取SQL_ID为“bsa0wjtftg3uw”的执行计划,可以看到历史有2种执行计划,一个是全表扫描,一个是索引范围扫描:

 1SYS@RAC2LHR1> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR(SQL_ID => 'bsa0wjtftg3uw' )) ; 2SQL_ID bsa0wjtftg3uw 3-------------------- 4SELECT file# FROM file$ WHERE ts#=:1 5Plan hash value: 690176192 6----------------------------------------------- 7| Id  | Operation                   | Name    | 8----------------------------------------------- 9|   0 | SELECT STATEMENT            |         |10|   1 |  TABLE ACCESS BY INDEX ROWID| FILE$   |11|   2 |   INDEX RANGE SCAN          | I_FILE2 |12-----------------------------------------------13Note14-----15   - rule based optimizer used (consider using cbo)16SQL_ID bsa0wjtftg3uw17--------------------18SELECT file# FROM file$ WHERE ts#=:119Plan hash value: 349462606820---------------------------------------------------------------------------21| Id  | Operation         | Name  | Rows  | Bytes | Cost (%CPU)| Time     |22---------------------------------------------------------------------------23|   0 | SELECT STATEMENT  |       |       |       |     2 (100)|          |24|   1 |  TABLE ACCESS FULL| FILE$ |     1 |     6 |     2   (0)| 00:00:01 |25---------------------------------------------------------------------------2631 rows selected.SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR(SQL_ID => 'bsa0wjtftg3uw' )) ; 2SQL_ID bsa0wjtftg3uw 3-------------------- 4SELECT file# FROM file$ WHERE ts#=:1 5Plan hash value: 690176192 6----------------------------------------------- 7| Id  | Operation                   | Name    | 8----------------------------------------------- 9|   0 | SELECT STATEMENT            |         |10|   1 |  TABLE ACCESS BY INDEX ROWID| FILE$   |11|   2 |   INDEX RANGE SCAN          | I_FILE2 |12-----------------------------------------------13Note14-----15   - rule based optimizer used (consider using cbo)16SQL_ID bsa0wjtftg3uw17--------------------18SELECT file# FROM file$ WHERE ts#=:119Plan hash value: 349462606820---------------------------------------------------------------------------21| Id  | Operation         | Name  | Rows  | Bytes | Cost (%CPU)| Time     |22---------------------------------------------------------------------------23|   0 | SELECT STATEMENT  |       |       |       |     2 (100)|          |24|   1 |  TABLE ACCESS FULL| FILE$ |     1 |     6 |     2   (0)| 00:00:01 |25---------------------------------------------------------------------------2631 rows selected.

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● QQ:646634621  QQ群:618766405

● 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

喜欢就点击“好看”吧

【DB笔试面试600】在Oracle中,如何获取SQL历史执行计划?相关推荐

  1. oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全

    该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...

  2. Oracle AWR 阙值影响历史执行计划

    最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史 ...

  3. SQL Server、Oracle 如何清除指定SQL的执行计划

    一. SQL Server 1. 存储过程 如果是存储过程,可以使用sp_recompile指定存储过程名重新编译. 注意如果里面的参数是表名,那么所有用到该表的存储过程和trigger都会重新编译, ...

  4. oracle 删除列 大数据_Oracle 删除指定sql的执行计划。

    1. oracle10g以前我们都是直接刷新共享池,但这样数据库中所有sql的执行计划都会被删掉.这种办法也不可取,下面简单介绍一下这种办法: 测试版本: SQL> select * from ...

  5. 【DB笔试面试606】在Oracle中,coe_xfr_sql_profile.sql脚本的作用是什么?

    ♣题目部分 在Oracle中,coe_xfr_sql_profile.sql脚本的作用是什么? ♣答案部分 使用coe_xfr_sql_profile.sql脚本生成sqlprof_attr数据 最麻 ...

  6. 【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?

    ♣题目部分 在Oracle中,获取执行计划有哪几种方法? ♣答案部分 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Pl ...

  7. 【DB笔试面试607】在Oracle中,coe_load_sql_profile.sql脚本的作用是什么?

    ♣题目 部分 在Oracle中,coe_load_sql_profile.sql脚本的作用是什么? ♣答案部分 可以使用coe_load_sql_profile.sql脚本直接固定执行计划,该脚本也可 ...

  8. 【DB笔试面试604】在Oracle中,存储概要(Stored Outline)的作用是什么?

    ♣题目 部分 在Oracle中,存储概要(Stored Outline)的作用是什么? ♣答案部分 OUTLINE的原理是将调好的执行计划(一系列的Hint)保存起来,然后使用该效率高的执行计划替换之 ...

  9. 【DB笔试面试164】在Oracle中,如何彻底停止expdp数据泵进程?

    [DB笔试面试164]在Oracle中,如何彻底停止expdp数据泵进程? 真题1. 如何彻底停止 expdp 进程? 答案:许多同事在使用expdp命令时,不小心按了CTRL+C组合键,然后又输入e ...

最新文章

  1. 苹果小圆点怎么关闭_苹果手机连按2下屏幕,就能自动截图,不知道的来学一学...
  2. 25Interpreter(解析器)模式
  3. 学习资料:网络回溯分析技术八大应用之安全取证
  4. mysql 优化版_MySQL优化(超完整版)(一)
  5. 论大型信息系统集成项目的人力资源管理
  6. 转载收藏之用 - 微信公众平台开发教程(三):微信公众平台开发验证
  7. android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录
  8. 民办大学计算机专业教师,干货!民办大学和独立院校教师创新排行榜,这五个高校最亮眼...
  9. isPrime()函数:判断素数,构造素数表
  10. 小红书推广方式和技巧有哪些?
  11. php实现简单微信支付(提供商户微信)
  12. /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵
  13. 域名dns劫持问题如何预防
  14. CFS调度时间片计算
  15. signature=c4909c704a84f06fbd526ac646c599dd,각변위 방식을 이용한 캡슐의 오리엔테이션 측정 방법...
  16. SqlServer数据库应用
  17. mysql 不用斯芬克斯 全局模糊匹配 查询
  18. 微信自定义分享,网页分享微信实现标题,描述和图片的方法(2020)
  19. ILSpy[.NET]反编译工具
  20. 《计算机网络安全》学习笔记之访问控制与虚和谐拟专和谐用网技术

热门文章

  1. 【2个月录用】网络安全、人工智能、物联网、数字研究领域,1区,SCI在检,正刊
  2. pythonpandas筛选_Python+pandas执行Excel筛选编辑功能
  3. WLAN无线局域网(HCIA)
  4. 20M的Wi-Fi能用百兆宽带?给大家科普下
  5. 运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用
  6. 《iOS移动开发从入门到精通》图书连载一:如果你也想开发一款自己的APP,可以看一下这篇文
  7. java中HashMap、ArrayList、HashSet的存储原理及遍历方式汇总
  8. 【语音识别】WeNet:面向工业落地的E2E语音识别工具
  9. 【设计模式】抽象工厂模式
  10. 6 月份最热 GitHub 盘点