我不明白需要在dba_hist_sqlstat
视图中添加额外记录的标准。我预计每个sql_id
and最多有一个条目snap_id
,即以下语句不返回任何记录:
select
count(*),
snap_id,
sql_id
from
dba_hist_sqlstat
group by
snap_id,
sql_id
having
count(*) > 1
order by
count(*) desc;
但是,它返回许多记录,表明不可能,而是正常情况下,每次捕获多次相同的sql语句snap_id
。
另外,每个 sql 和 snap 周期有多个记录,我如何解释这个视图中的delta列?文档内容如下:
增量值是 DBA_HIST_SNAPSHOT 视图中从 BEGIN_INTERVAL_TIME 到 END_INTERVAL_TIME 的统计值。
这对我来说真的没有意义。
根据贾斯汀的评论更新:这不在 RAC 环境中:所以即使 I group by snap_id, sql_id, dbid, instance_number
,查询也会返回每个 snap_id 和 sql_id 的多条记录。
Oracle 为每个 SQL 执行计划/sql_id(
plan_hash_value
) 收集 SQL 统计信息,而不仅仅是针对特定的sql_id
.为了验证确实如此,这个查询应该返回 0 行: