Mts dispatcher utilization

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Voir aussi Mts dispatcher status · Mts shared server utilization · Mts queue information

MTS (Multi-Threaded Server, renommé Shared Server à partir d'Oracle 9i) répartit les connexions clients sur un pool de processus dispatcher. Ce script calcule le pourcentage de temps où chaque dispatcher est occupé (busy) plutôt qu'en attente (idle) — un indicateur direct de saturation du pool : un taux durablement élevé (au-delà de ~50 %) signale qu'il faut augmenter le nombre de dispatchers (DISPATCHERS).

Script

-- % d'occupation de chaque dispatcher MTS/Shared Server, toutes instances.

SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF

COLUMN instance_name   FORMAT a10    HEADING 'Instance'
COLUMN dispatcher_name FORMAT a16    HEADING 'Dispatcher'
COLUMN pct_busy         FORMAT 999.99 HEADING '% Occupé'

SELECT
    i.instance_name                                       instance_name
  , d.name                                                 dispatcher_name
  , ROUND(d.busy / NULLIF(d.busy + d.idle, 0) * 100, 2)    pct_busy
FROM
    gv$instance   i
  , gv$dispatcher d
WHERE
    i.inst_id = d.inst_id
ORDER BY
    i.instance_name, d.name
/

Le NULLIF(d.busy + d.idle, 0) évite une erreur de division par zéro sur un dispatcher qui vient tout juste de démarrer (aucun temps busy ni idle encore cumulé) : la ligne remonte alors avec un pourcentage à NULL plutôt que de faire échouer la requête.

Voir aussi