Вы можете присоединиться к DBA_HIST_ACTIVE_SESS_HISTORY
и DBA_HIST_SQLTEXT
, если sql был записан в репозиторий рабочей нагрузки.
В DBA_HIST_ACTIVE_SESS_HISTORY
у вас есть поле MACHINE
, в котором вы получил значение SYS_CONTEXT('userenv','host')
.
Вы можете объединить оба представления по sql_id.
Однако запрос не будет зарегистрирован в репозитории рабочей нагрузки, если он не имеет смысла. Вы можете изменить это поведение, изменив настройки AWR
, используя DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS
Пример
select
distinct s.sql_id,
s.sql_text,
d.machine ,
u.username ,
d.program
from
gv$sql s inner join dba_hist_active_sess_history d
on ( d.sql_id = s.sql_id and S.INST_ID = D.INSTANCE_NUMBER )
inner join dba_users u on ( D.USER_ID = U.USER_ID )
where
u.username = '&1'
S.SQL_ID = '&2'
order by D.SAMPLE_TIME desc
Вы можете применить фильтр по имени пользователя или sql_id, или по обоим. имейте в виду, что поле USERNAME покажет вам пользователя Oracle, выполнившего запрос, а не пользователя операционной системы, стоящего за этим соединением.