Files
oracle/tpt/ash/sqlexec_longer_than.sql

49 lines
1.0 KiB
MySQL
Raw Normal View History

2026-03-12 21:23:47 +01:00
WITH ash AS (
SELECT
sql_id
, sample_time
, sample_time - CAST(MIN(sql_exec_start) OVER(PARTITION BY session_id,session_serial#,sql_exec_start,sql_exec_id) AS TIMESTAMP) elapsed_time
, sql_exec_start
, sql_exec_id
, session_state
, event
FROM
v$active_session_history
WHERE
sql_id = '&1'
--AND sample_time BETWEEN TIMESTAMP'2020-02-26 14:45:17' AND TIMESTAMP'2020-02-26 15:15:17'
GROUP BY
sql_id
, session_id
, session_serial#
, sample_time
, sql_exec_start
, sql_exec_id
, session_state
, event
),
longrunning AS (
SELECT * FROM ash
WHERE
elapsed_time > INTERVAL '1' SECOND
)
SELECT
sql_id
, sql_exec_start
, MAX(elapsed_time) -- an earlier analytic function already does the "partition by session_id,session_serial#"
, session_state
, event
, COUNT(*) seconds
FROM longrunning
GROUP BY
sql_id
, sql_exec_start
, session_state
, event
ORDER BY
sql_id
, sql_exec_start
, COUNT(*) DESC
/