Skip to content

how-to find FTS of big tables in ash

how-to find FTS of big tables in ash published on Комментариев к записи how-to find FTS of big tables in ash нет
 
with ash_fts as (
select u.username, ash.sql_id,ash.sql_plan_hash_value,ash.sql_plan_line_id from v$active_session_history ash
    join dba_users u  on ash.user_id=u.user_id
    where ash.sql_plan_operation='TABLE ACCESS' and ash.sql_plan_options='FULL' and ash.sample_time> sysdate-1/24  
    group by u.username, ash.sql_id,ash.sql_plan_hash_value,ash.sql_plan_line_id) --- ищем фулсканы таблиц за последний час, если убрать условие, то будет за весь период который храниться в ASH (глубина зависит от нагрузки на базу, от часов до дней )
 
 
    ,big_tables as (  select round (dt.num_rows*dt.avg_row_len/1024/1024/1024) table_size_gb,table_name,owner From dba_tables dt
where round (dt.num_rows*dt.avg_row_len/1024/1024/1024) > 2)    -- переписал на получение информации из статистики, ищем таблицы больше 2 гб
 
 
select ash.sql_id,b.owner, hsp.object_name from dba_hist_sql_plan hsp
    join ash_fts ash on ash.sql_plan_line_id=hsp.id and ash.sql_id=hsp.sql_id and ash.sql_plan_hash_value=hsp.plan_hash_value
    join big_tables b on b.table_name=hsp.object_name;
 

в результате увидим sql_id запроса и большую таблицу на которую идет фулскан


SQL_ID        | OWNER                          | OBJECT_NAME
------------- | ------------------------------ | -------------------------------
f9j0hsaz7h9y8 | LK                             | CALENDAR
 

Primary Sidebar