How to find long running queries in Oracle
SQL queries takes long time to complete. You can check long running
sessions using v$session_longops script which will show you, %
completed, remaining time, sofar completed and much more detailed
information.
Monitor long running sessions in Oracle using below queries:
QUERY 1:
SELECT SID, SERIAL#,OPNAME, CONTEXT, SOFAR,
TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM
V$SESSION_LONGOPS WHERE OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0
AND SOFAR <> TOTALWORK;
QUERY 2:
set lines 300
col TARGET for a40
col SQL_ID for a20
select SID,TARGET||OPNAME TARGET, TOTALWORK, SOFAR,TIME_REMAINING/60
Mins_Remaining,ELAPSED_SECONDS,SQL_ID from v$session_longops where
TIME_REMAINING>0 order by TIME_REMAINING;
From the above output you can further check the sql_id, sql_text and the wait event for which query is waiting for.
TO find out sql_id for the above sid:
SQL> select sql_id from v$session where sid='&SID';
To find sql text for the above sql_id:
SQL> select sql_fulltext from V$sql where sql_id='bgf07y9xn8grx';
To find wait event of the query for which it is waiting for:
SQL>select sql_id, state, last_call_et, event, program, osuser from v$session where sql_id='&sql_id';
To kill session in Oracle:
https://fastsqlplsql.blogspot.com/2020/01/4-best-ways-to-find-blocking-sessions.html
0 Comments