Consulter les requêtes / sessions de longue durée
OracleSessions et processusCommande
-- Active, long-running SQL:
SELECT s.sid, s.serial#, s.username, s.status,
s.last_call_et AS seconds_active,
s.sql_id, q.sql_text,
s.event, s.machine, s.program
FROM v$session s
LEFT JOIN v$sql q ON q.sql_id = s.sql_id
AND q.child_number = s.sql_child_number
WHERE s.type = 'USER'
AND s.status = 'ACTIVE'
AND s.last_call_et > 60
ORDER BY s.last_call_et DESC;
-- Long operations with percentage progress:
SELECT sid, serial#, opname, sofar, totalwork,
ROUND(sofar/NULLIF(totalwork,0)*100,1) AS pct, time_remaining
FROM v$session_longops
WHERE sofar < totalwork ORDER BY start_time DESC;Ce que fait la commande
Liste les sessions actives depuis plus de 60 secondes et la progression des opérations batch longues.
Quand l'utiliser
En cas de plaintes de lenteur, pour trouver la requête qui occupe le système.
Attention
last_call_et est le temps écoulé depuis le dernier appel ; il peut aussi être élevé pour une session inactive, d'où l'importance du filtre status='ACTIVE'. Requête uniquement ; aucun risque.