Welcome 微信登录

首页 / 数据库 / MySQL / Oracle AWR 阙值影响历史执行计划

最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史执行计划乃正常现象。在Oracle 9i的时候,我们可以通过设定不同的快照level获得不同程度的详细信息。也可以单独配置收集sql的阙值,如指定sql的执行次数,磁盘读的次数,解析调用的数量等。所有超出这个设置的sql语句都收集到snapshot之中。Oracle 10g,11g也有相应的设置。下面来描述这个问题。1、缺省阙值的情形--环境,下面的演示基于Oracle 10g
scott@CNMMBO> select * from v$version where rownum<2;BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production--下面的查询awr配置
scott@CNMMBO> select * from dba_hist_wr_control;      DBID SNAP_INTERVAL        RETENTION               TOPNSQL
---------- -------------------- ------------------------- ----------
 938506715 +00000 01:00:00.0    +00007 00:00:00.0       DEFAULT--发布sql查询
scott@CNMMBO> select * from dept where loc="CHICAGO";    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO--获得sql_id
scott@CNMMBO> @my_last_sqlADDRESS          HASH_VALUE SQL_ID        COMMAND_TYPE      PIECE SQL_TEXT
---------------- ---------- ------------- ------------ ---------- ------------------------------------------
000000009F942760 2626775672 2jbkb5qf92ums            3          0 select * from dept where loc="CHICAGO"--从v$sql_plan获得缓冲区的执行计划
scott@CNMMBO> get sql_plan_curr.sql
  1  set linesize 135
  2  col id format 99
  3  col operation format a25
  4  col options format a25
  5  col object_name format a25 wrap
  6  SELECT id,
  7         operation,
  8         options,
  9         object_name,
 10         bytes,
 11         cpu_cost,
 12         io_cost
 13  FROM v$sql_plan
 14   WHERE sql_id = "&input_sql_id"
 15* ORDER BY id;
scott@CNMMBO> @sql_plan_curr.sql      -->此时可以查询到对应sql的执行计划
Enter value for input_sql_id: 2jbkb5qf92ums ID OPERATION               OPTIONS                 OBJECT_NAME      BYTES CPU_COST    IO_COST
--- ------------------------- ------------------------- --------------- ------- ---------- ----------
  0 SELECT STATEMENT
  1 TABLE ACCESS              FULL                      DEPT                20      36567          3--下面尝试从dba_hist_sql_plan获得执行计划
scott@CNMMBO> get sql_plan_his.sql
  1  set linesize 135
  2  col id format 99
  3  col operation format a25
  4  col object_name format a25 wrap
  5  SELECT id,
  6         operation,
  7         options,
  8         object_name,
  9         bytes,
 10         cpu_cost,
 11         io_cost
 12      FROM dba_hist_sql_plan
 13   WHERE sql_id = "&input_sql_id"
 14* ORDER BY id;
scott@CNMMBO> @sql_plan_his   --查询无法获得执行计划
Enter value for input_sql_id: 2jbkb5qf92umsno rows selectedscott@CNMMBO> exec dbms_workload_repository.create_snapshot();  -->执行一次快照,写入缓冲区的内容倒snapshoPL/SQL procedure successfully completed.scott@CNMMBO> @sql_plan_his   -->依旧无法获得执行计划
Enter value for input_sql_id: 2jbkb5qf92umsno rows selected
  • 1
  • 2
  • 3
  • 下一页
Oracle smon_scn_time 表 说明RMAN备份学习笔记相关资讯      Oracle AWR 
  • Oracle AWR常用指标整理  (08/13/2015 20:54:10)
  • Oracle 11g 如何修改 AWR 的保留期  (06/11/2014 19:45:24)
  • 如何评估Oracle AWR 的在Oracle 中  (12/05/2013 21:32:09)
  • 禁用与卸载Oracle AWR特性  (09/12/2014 21:05:55)
  • Oracle AWR报告生成步骤  (06/04/2014 19:33:23)
  • Oracle AWR SQL监控指标详细解释  (05/15/2013 09:06:31)
本文评论 查看全部评论 (0)
表情: 姓名: 字数