--1 find  OBJECTs where a lot blocks changed
--db_block_changes_delta: The delta value is the value of the statistics 
--  from the BEGIN_INTERVAL_TIME to the END_INTERVAL_TIME in the DBA_HIST_SNAPSHOT view.

select * from (  
SELECT to_char(begin_interval_time, 'YYYY_MM_DD HH24:MI') snap_time,  
       dhsso.object_name,  
       dhsso.object_type,
       dhsso.owner, 
       SUM(dhss.db_block_changes_delta)  changed_blk 
  FROM dba_hist_seg_stat     dhss,  
       dba_hist_seg_stat_obj dhsso,  
       dba_hist_snapshot     dhs  
 WHERE dhs.snap_id = dhss.snap_id  
   AND dhs.instance_number = dhss.instance_number  
   AND dhss.obj# = dhsso.obj#  
   AND dhss.dataobj# = dhsso.dataobj#  
   AND begin_interval_time> sysdate - 24/24 
 GROUP BY to_char(begin_interval_time, 'YYYY_MM_DD HH24:MI'),  
          dhsso.object_name  ,dhsso.object_type,
       dhsso.owner
 order by 5 desc)  
 where rownum < 50
 
 
 
 --2 find SQL which related to these OBJECTS in setp 1
 
 SELECT to_char(begin_interval_time, 'YYYY_MM_DD HH24:MI'),  
       dbms_lob.substr(sql_text, 4000, 1),  
       dhss.instance_number,  
       dhss.sql_id,  
       executions_delta,  
       rows_processed_delta  
  FROM dba_hist_sqlstat dhss, dba_hist_snapshot dhs, dba_hist_sqltext dhst  
 WHERE UPPER(dhst.sql_text) LIKE '%TEST_REDO%'  
   AND dhss.snap_id = dhs.snap_id  
   AND dhss.instance_Number = dhs.instance_number  
   AND dhss.sql_id = dhst.sql_id;
   

--3 find session、module、machine and so on  related to these SQL in step 2

select * from dba_hist_active_sess_history WHERE sql_id = 'g893rmm0rmjra';  
select * from v$active_session_history where sql_Id = 'g893rmm0rmjra';     
  • No labels