Если я понимаю, что вы пытаетесь сделать, нет необходимости искать незавершенные транзакции. DBA_HIST_ACTIVE_SESS_HISTORY
имеет столбец BLOCKING_SESSION
, в котором будет указано, что ожидал сеанс в это время.
В случае сеанса, ожидающего на enq: TX - row lock contention
, сеанс блокировки должен быть сеансом, который удерживал блокировку (т.е. сеанс в середине "незафиксированной транзакции", которую вы искали).
Чтобы узнать подробности сеансов с их блокировщиками, сделайте что-то вроде этого:
SELECT s.*, blk.*
FROM dba_hist_active_sess_history s
-- Add this join to get blocking session
INNER JOIN dba_hist_active_sess_history blk
ON blk.session_id = s.blocking_session
AND blk.dbid = s.dbid
AND blk.snap_id = s.snap_id
AND blk.instance_number = s.instance_number
AND blk.sample_id = s.sample_id