Undo contention
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic (Undo) |
| Voir aussi | Undo segments · Undo users |
Undo contention calcule un taux d'attente (« wait ratio ») sur les en-têtes et les blocs des segments d'annulation (UNDO), rapporté à l'activité globale de lecture (db block gets + consistent gets). Un ratio anormalement élevé sur les classes undo header / undo block (ou leurs équivalents system undo header / system undo block) est le signe classique d'une contention sur l'UNDO tablespace : dimensionnement insuffisant, nombre de segments d'annulation trop faible pour la charge concurrente, ou UNDO_RETENTION mal calibré.
Le script interroge les vues GV$ et fonctionne aussi bien sur une instance unique qu'en RAC.
Script
-- Taux de contention sur les segments UNDO (RAC-compatible)
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF
COLUMN instance_name FORMAT a10 HEADING 'Instance'
COLUMN class FORMAT a18 HEADING 'Class'
COLUMN ratio HEADING 'Wait Ratio'
BREAK ON instance_name SKIP 2
SELECT
i.instance_name instance_name
, w.class class
, ROUND(100 * (w.count / SUM(s.value)), 8) ratio
FROM
gv$instance i
, gv$waitstat w
, gv$sysstat s
WHERE
i.inst_id = w.inst_id
AND i.inst_id = s.inst_id
AND w.class IN ( 'system undo header'
, 'system undo block'
, 'undo header'
, 'undo block'
)
AND s.name IN ('db block gets', 'consistent gets')
GROUP BY
i.instance_name
, w.class
, w.count
ORDER BY
i.instance_name
, w.class;
Voir aussi
- Undo segments — détail des segments (taille, wraps, shrinks, optimal size)
- Undo users — sessions détenant une transaction active sur un segment UNDO