• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 33次浏览 已收录 0个评论

Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史执行计划乃正常现象。在Oracle 9i的时候,我们可以通过设定不

最近有网友提到为什么在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_sql

ADDRESS 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

本文来源gaodai.ma#com搞#代!码(网

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: 2jbkb5qf92ums

no rows selected

scott@CNMMBO> exec dbms_workload_repository.create_snapshot(); –>执行一次快照,写入缓冲区的内容倒snapsho

PL/SQL procedure successfully completed.

scott@CNMMBO> @sql_plan_his –>依旧无法获得执行计划
Enter value for input_sql_id: 2jbkb5qf92ums

no rows selected


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle AWR 阙值影响历史执行计划

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址