暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DBA_HIST_SQLSTAT和GV $ SQL

askTom 2018-06-19
996

问题描述

嗨,

我试图创建一个仪表板,比较多个SQL语句的历史执行和当前执行。我注意到GV $ SQL和DBA_HIST_SQLSTAT中的统计数据之间存在一些差异。您能否帮助我们理解以下几点。

例如: 对于一个SQL_ID,我在DBA_HIST_SQLSTAT和DBA_HIST_SNAPSHOT中有37行 (所有的PHV和子号相同)。executions_delta列的总和给我91。然而,按照GV $ SQL,执行只有40。

从DBA_HIST_SNAPSHOT开始的最小开始间隔时间为23/May/2018,最大结束间隔时间为5/6月/2018。v $ sql中的First_load_time和last_load_time分别2018年1月31日和2018年6月18日。

请帮助我理解为什么与gv $ sql值相比,DBA_HIST_SNAPSHOT在较短的时间内可以有更多的执行次数。




专家解答

如果语句退出缓存,则执行次数将重置:

select /* FLUSH_ME */* from dual;
select /* FLUSH_ME */* from dual;
select /* FLUSH_ME */* from dual;
select /* FLUSH_ME */* from dual;

exec dbms_lock.sleep(15);

select sql_id, executions, address, hash_value, first_load_time
from   v$sql
where  sql_text = 'select /* FLUSH_ME */* from dual';

SQL_ID          EXECUTIONS   ADDRESS            HASH_VALUE   FIRST_LOAD_TIME       
afjuux59dc7ty              4 0000000097BF3F70     1389764414 2018-06-20/07:39:23

exec sys.dbms_shared_pool.purge('0000000097BF3F70,1389764414', 'C'); 

select sql_id, executions, address, hash_value, first_load_time
from   v$sql
where  sql_text = 'select /* FLUSH_ME */* from dual';

no rows selected

select /* FLUSH_ME */* from dual;

select sql_id, executions, address, hash_value, first_load_time
from   v$sql
where  sql_text = 'select /* FLUSH_ME */* from dual';

SQL_ID          EXECUTIONS   ADDRESS            HASH_VALUE   FIRST_LOAD_TIME       
afjuux59dc7ty              1 0000000097BF3F70     1389764414 2018-06-20/07:39:23 
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论