Não entendo o critério que acarreta um registro adicional na dba_hist_sqlstat
view. Eu esperava que houvesse no máximo uma entrada por sql_id
e snap_id
, ou seja, a seguinte instrução não retornaria nenhum registro:
select
count(*),
snap_id,
sql_id
from
dba_hist_sqlstat
group by
snap_id,
sql_id
having
count(*) > 1
order by
count(*) desc;
Ainda assim , ele retorna muitos registros, indicando que não é possível, mas a normalidade, que a mesma instrução sql seja capturada várias vezes por snap_id
.
Além disso, com mais de um registro por sql e período de snap, como interpreto as colunas delta nessa exibição? A documentação diz:
O valor delta é o valor das estatísticas de BEGIN_INTERVAL_TIME a END_INTERVAL_TIME na exibição DBA_HIST_SNAPSHOT.
Isso realmente não faz sentido para mim.
Atualize de acordo com o comentário de Justin : isso não está em um ambiente RAC: portanto, mesmo que eu group by snap_id, sql_id, dbid, instance_number
, a consulta retorne vários registros por snap_id e sql_id.
A Oracle coleta estatísticas SQL para cada plano de execução SQL/sql_id (
plan_hash_value
), em vez de apenas para um arquivosql_id
.Para verificar se este é realmente o caso, esta consulta deve retornar 0 linhas: