Temp sort users
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic (Tablespace temporaire) |
| Voir aussi | Temp sort segment · Temp status |
Temp sort users identifie les sessions qui effectuent actuellement un tri (ou toute autre opération) dans l'espace temporaire. Le script croise la vue V$SORT_USAGE (tris actifs de l'instance) avec V$SESSION et V$PROCESS pour retrouver l'utilisateur Oracle, l'utilisateur système, le PID côté OS et le programme client à l'origine du tri. Compatible RAC (vues GV$).
La colonne Contents indique si le segment est créé dans un tablespace temporaire ou permanent — en pratique elle vaut toujours TEMPORARY depuis Oracle9i, la distinction ne concernant que les très anciennes versions.
Utile pour identifier rapidement quelle session sature le tablespace temporaire (gros tri, hash join mal dimensionné, requête sans index adapté...).
Script
-- Sessions consommant actuellement de l'espace de tri temporaire (RAC-compatible)
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF
COLUMN instance_name FORMAT a8 HEADING 'Instance'
COLUMN tablespace_name FORMAT a15 HEADING 'Tablespace Name'
COLUMN sid FORMAT 99999 HEADING 'SID'
COLUMN serial_id FORMAT 99999999 HEADING 'Serial ID'
COLUMN session_status FORMAT a9 HEADING 'Status'
COLUMN oracle_username FORMAT a18 HEADING 'Oracle User'
COLUMN os_username FORMAT a18 HEADING 'O/S User'
COLUMN os_pid FORMAT a8 HEADING 'O/S PID'
COLUMN session_program FORMAT a20 HEADING 'Session Program' TRUNC
COLUMN contents FORMAT a9 HEADING 'Contents'
COLUMN segtype FORMAT a12 HEADING 'Segment Type'
COLUMN bytes FORMAT 999,999,999,999 HEADING 'Bytes'
BREAK ON instance_name SKIP PAGE
SELECT
i.instance_name instance_name
, t.tablespace tablespace_name
, s.sid sid
, s.serial# serial_id
, s.status session_status
, s.username oracle_username
, s.osuser os_username
, p.spid os_pid
, s.program session_program
, t.contents contents
, t.segtype segtype
, (t.blocks * c.value) bytes
FROM
gv$instance i
, gv$session s
, gv$process p
, gv$sort_usage t
, (SELECT value FROM v$parameter
WHERE name = 'db_block_size') c
WHERE
s.inst_id = p.inst_id
AND p.inst_id = i.inst_id
AND t.inst_id = i.inst_id
AND s.inst_id = i.inst_id
AND s.saddr = t.session_addr
AND s.paddr = p.addr
ORDER BY
i.instance_name
, s.sid;
Voir aussi
- Temp sort segment — état réel du segment de tri consommé par ces sessions
- Temp status — vue d'ensemble (taille, occupation) de tous les tablespaces temporaires