Mts queue information

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 statistics · Mts dispatcher utilization

MTS (Multi-Threaded Server, renommé Shared Server à partir d'Oracle 9i) fait transiter les requêtes client par deux files d'attente : la file COMMON (requêtes en attente d'être prises en charge par un shared server) et la file propre à chaque dispatcher (réponses en cours de retour au client). Ce script mesure le nombre de requêtes en file et le temps d'attente moyen — un bon indicateur pour savoir s'il faut ajouter des processus shared server.

Script

-- État des files d'attente MTS/Shared Server (COMMON + par dispatcher), toutes instances.
-- Temps d'attente moyen exprimé en centièmes de seconde (37 => 0,37 s).

SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF

COLUMN instance_name   FORMAT a10    HEADING 'Instance'
COLUMN dispatcher_name FORMAT a16    HEADING 'Dispatcher'
COLUMN queue_type       FORMAT a13    HEADING 'File'
COLUMN queued                         HEADING 'En attente'
COLUMN avg_wait_cs       FORMAT 999.99 HEADING 'Attente moy. (cs)'

SELECT
    i.instance_name                          instance_name
  , d.name                                   dispatcher_name
  , q.type                                   queue_type
  , q.queued                                 queued
  , DECODE(q.totalq, 0, 0, q.wait / q.totalq) avg_wait_cs
FROM
    gv$instance   i
  , gv$queue      q
  , gv$dispatcher d
WHERE
      i.inst_id = q.inst_id
  AND d.inst_id = q.inst_id
  AND d.paddr   = q.paddr
ORDER BY
    i.instance_name, d.name
/

Si l'attente moyenne sur la file COMMON reste élevée alors que Mts shared server utilization montre des processus déjà bien occupés, la solution est d'augmenter SHARED_SERVERS (ou MAX_SHARED_SERVERS) plutôt que le nombre de dispatchers.

Voir aussi