Oracle dba_hist_seg_stat не хранит информацию о работе всех таблиц, почему? - PullRequest
0 голосов
/ 22 марта 2019

У меня проблема с использованием dba_hist_seg_stat.Он не записывает информацию об операции на новой созданной таблице.Ниже приведен полный пример.Я создаю таблицу и 3 строки, создаю снимок, выполняю несколько операций над таблицей, создаю второй снимок и, наконец, я пытаюсь найти статистику для новой таблицы, но выбор ничего не находит.В чем проблема с этим?Я заметил, что после нескольких операций я вижу некоторую статистику, но это происходит случайно.

 -- create test data
drop table testXX
/
  create table testXX 
(
   a       VARCHAR2(8),
   b   VARCHAR2(255),
   c         INTEGER
)
   tablespace SDATA
/

 INSERT INTO testXX (a,b,c) VALUES ('23423424','234234', 2222) 
 /
 INSERT INTO testXX (a,b,c) VALUES ('13423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('03423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('23423424','234234', 2222) 
 /
 INSERT INTO testXX (a,b,c) VALUES ('13423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('03423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('23423424','234234', 2222) 
 /
 INSERT INTO testXX (a,b,c) VALUES ('13423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('03423424','234234', 2222) 
/
 INSERT INTO testXX (a,b,c) VALUES ('03423424','234234', 2222) 
/

-- creating snapshoot
EXEC dbms_workload_repository.create_snapshot;
/
-- few sample select

SELECT * FROM testXX
/

SELECT * FROM testXX WHERE a='23423424'
/

-- creating final snapshoot
EXEC dbms_workload_repository.create_snapshot;


select
    owner,
    object_name,                                  
 LOGICAL_READS_DELTA,                                   
 BUFFER_BUSY_WAITS_DELTA    ,                     
 DB_BLOCK_CHANGES_DELTA   ,                       
 PHYSICAL_READS_DELTA     ,                            
 PHYSICAL_WRITES_DELTA      ,                         
 PHYSICAL_READS_DIRECT_DELTA    ,             
 PHYSICAL_WRITES_DIRECT_DELTA      
from
   dba_hist_seg_stat       s,
   dba_hist_seg_stat_obj   o,
   dba_hist_snapshot       sn
where
   o.object_name = 'TESTXX'
and
   s.obj# = o.obj#
AND 
   S.SNAP_ID=SN.SNAP_ID
AND
    SN.SNAP_ID=(SELECT MAX(SNAP_ID) FROM DBA_HIST_SNAPSHOT)
order by
   3  desc
/


    and
       s.obj# = o.obj#
    order by
       3  desc;
...