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

Oracle AWR视图中的SQL语句

askTom 2018-05-29
1783

问题描述

嗨,汤姆,

我试图通过使用AWR视图来查找给定sql语句的执行历史记录,例如dba_hist_active_sess_hist_hist_sqlstat,DBA_HIST_SQLTEXT,DBA_HIST_SQL_PLAN等。

我通过查询DBA_HIST_SQLTEXT找到SQL的SQL_IDs
我发现了一些sql_id,但是,这些sql_id的详细信息在其他AWR视图中不存在dba_hist_active_sess _history,DBA_HIST_SQLSTAT,DBA_HIST_SQL_PLAN

原因可能是什么?

另外,其他视图也存在相同的问题,例如。g。DBA_HIST_ACTIVE_SESS_HISTORY中的SQL_ID在DBA_HIST_SQL_PLAN视图中不可用。因此无法看到用于查询执行的计划。

你能帮我吗?另外,请让我知道是否有更好的方法来实现这一点,而不是这些观点。

专家解答

如果您描述了DBA_HIST_SQLTEXT

SQL> desc DBA_HIST_SQLTEXT
 Name                                      Null?    Type
 ----------------------------------------- -------- ------------
 DBID                                      NOT NULL NUMBER
 SQL_ID                                    NOT NULL VARCHAR2(13)
 SQL_TEXT                                           CLOB
 COMMAND_TYPE                                       NUMBER
 CON_DBID                                           NUMBER
 CON_ID                                             NUMBER
复制


您可以看到它没有任何SNAP_ID列。那是因为它的处理方式与AWR中的其他对象略有不同。每次我们拍摄快照时,抓取整个实例的SQL副本并没有多大意义-它会消耗大量空间,绝大多数空间几乎没有用处,并且还会在快照中复制。同样,您会看到DBA_HIST_SQLSTAT (看起来类似于v $ sqlstats) 省略了文本的clob列。这只是我们捕获的内容与将资源保持在合理水平之间的折衷。我们捕获通常对正在进行的分析有意义的SQL-当我们拍摄快照时,它也会受到我们捕获的SQL数量的影响-参见DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS。因此,您可以将DBA_HIST_SQLTEXT视为SQL的松散超集,这些超集被认为对我们当前拍摄的快照感兴趣。因此,与其他AWR历史观点的关系并不是一成百就的。

MOS Note 1580764.1提供了一个脚本和一些关于检查给定SQL_ID的性能历史的有用信息,但最终它只是加入dba_hist_sqlstat和dba_hist_snapshot。

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

评论