Sess uncommited transactions
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic (Sessions) |
| Voir aussi | Sess current user transactions · Sess users |
Sess uncommited transactions liste toutes les sessions autres que la session
courante possédant une transaction encore ouverte (ni COMMIT ni
ROLLBACK), avec le volume d'annulation (undo) déjà consommé — utile avant
un arrêt planifié d'instance ou pour repérer une transaction oubliée qui retient des
verrous.
Script
SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT rpad(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report : Uncommited Transactions |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET LINESIZE 180
SET PAGESIZE 50000
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN sid FORMAT 999999 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 a30 HEADING 'Session Program' TRUNC
COLUMN session_machine FORMAT a30 HEADING 'Machine' TRUNC
COLUMN number_of_undo_records FORMAT 999,999,999,999 HEADING '# Undo Records'
COLUMN used_undo_size FORMAT 999,999,999 HEADING 'Used Undo (MB)'
SELECT
s.sid sid
, s.status session_status
, s.username oracle_username
, s.osuser os_username
, p.spid os_pid
, b.used_urec number_of_undo_records
, (b.used_ublk * d.value) / 1024 / 1024 used_undo_size
, s.program session_program
, s.machine session_machine
FROM
v$process p
, v$session s
, v$transaction b
, v$parameter d
WHERE
b.ses_addr = s.saddr
AND p.addr(+) = s.paddr
AND s.audsid <> SYS_CONTEXT('USERENV', 'SESSIONID')
AND d.name = 'db_block_size'
/
Le filtre s.audsid <> SYS_CONTEXT('USERENV', 'SESSIONID') exclut la session
SQL*Plus qui exécute le script elle-même (forme moderne recommandée, la fonction
USERENV('SESSIONID') de la version d'origine reste supportée mais est
dépréciée au profit de SYS_CONTEXT).
Voir aussi
- Sess current user transactions — détail complet (verrous + transactions), y compris la session courante
- Sess users — inventaire de toutes les sessions connectées