DBA_HIST_SQLSTAT: ненулевое время, в то время как номер выполнения равен нулю
Здравствуйте, я обнаружил странную ситуацию с некоторой статистикой sql_ids в представлении dba_hist_sqlstat. Похоже, что они имеют ненулевые значения прошедшего времени, когда значения выполнения равны нулю. Я не понимаю, как это возможно. Может быть, в ситуациях, когда сеанс неактивен или происходит событие ожидания. У вас когда-нибудь была похожая ситуация и что это может значить?
select sql_id, plan_hash_value, snap_id, sum(executions_delta), sum(elapsed_time_delta) from dba_hist_sqlstat group by sql_id, plan_hash_value, snap_id having sum(executions_delta) = 0;
SQL_ID PLAN_HASH_VALUE SNAP_ID SUM(EXECUTIONS_DELTA) SUM(ELAPSED_TIME_DELTA)
------------- --------------- ------- --------------------- -----------------------
0v3dvmc22qnam 0 14212 0 116
cfz686a6qp0kg 14223 0 0
7ng34ruy5awxq 14203 0 0
b07vcvuxryvg9 2129701755 14219 0 0
czvfg1255s5zg 775635102 14202 0 0
b07vcvuxryvg9 14209 0 0
cfz686a6qp0kg 14201 0 0
b07vcvuxryvg9 2129701755 14201 0 0
5rxbazwmcdfaz 0 14202 0 1263
1 ответ
Долгосрочный запрос, охватывающий несколько снимков, будет иметь время выполнения без каких-либо выполнений, если вы посмотрите только на один снимок. В противном случае сумма EXECUTIONS_DELTA будет неверной.
В одном сеансе создайте таблицу и запустите длительный запрос:
create table test3 as
select level a from dual connect by level <= 100000;
select count(*) from test3 cross join test3 cross join test3;
Пока он работает, откройте другой сеанс и создайте несколько снимков:
begin
dbms_workload_repository.create_snapshot;
dbms_lock.sleep(5);
dbms_workload_repository.create_snapshot;
end;
/
Используйте V$SQL, чтобы найти SQL_ID, но он будет таким же, как показано ниже, если вы будете использовать тот же текст, что и выше. Выполнение запроса учитывается только в одном снимке, но время записывается в двух снимках.
select sql_id, plan_hash_value, snap_id,
sum(executions_delta),
sum(elapsed_time_delta)
from dba_hist_sqlstat
where sql_id = '09pgf63pczkxg'
group by sql_id, plan_hash_value, snap_id;
SQL_ID PLAN_HASH_VALUE SNAP_ID SUM(EXECUTIONS_DELTA) SUM(ELAPSED_TIME_DELTA)
09pgf63pczkxg 3377121179 5570 1 22001734
09pgf63pczkxg 3377121179 5571 0 6010267