dba_hist_sqlstat
ビューに追加のレコードが必要な基準がわかりません。 sql_id
およびsnap_id
ごとに最大で1つのエントリがあると予想しました。つまり、レコードを返さない次のステートメントです。
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とスナップ期間ごとに複数のレコードがある場合、このビュー内のdelta列をどのように解釈しますか?ドキュメントには次のように書かれています。
デルタ値は、DBA_HIST_SNAPSHOTビューのBEGIN_INTERVAL_TIMEからEND_INTERVAL_TIMEまでの統計の値です。
これは私にはあまり意味がありません。
更新Justinのコメントによる:これはRAC環境ではないため、group by snap_id, sql_id, dbid, instance_number
であっても、クエリは複数のレコードを返しますsnap_idおよびsql_idごと。
Oracleは、SQL実行プラン/ sql_idごとにSQL統計を収集します(plan_hash_value
)、特定のsql_id
。
これが実際に当てはまることを確認するには、このクエリは0行を返す必要があります。
select
count(*),
snap_id,
sql_id,
plan_hash_value
from
dba_hist_sqlstat
group by
snap_id,
sql_id,
plan_hash_value
having
count(*) > 1
order by
count(*) desc;