how-to find FTS of big tables in ash

[code language=»sql»]

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;
[/code]
в результате увидим sql_id запроса и большую таблицу на которую идет фулскан
[code language=»sql»]

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

[/code]

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.