Perf file waits

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Voir aussi Perf file io · Perf file io efficiency · Owi event names

Perf file waits compte, par fichier de données, le nombre d'attentes de type buffer busy waits et leur durée moyenne — un indicateur de contention (accès concurrents au même bloc) à distinguer du volume d'I/O mesuré par Perf file io : un fichier peut avoir un volume d'I/O modéré mais une forte contention si plusieurs sessions se disputent les mêmes blocs (cas classique : insertions concurrentes sur un index séquentiel, ou segments d'en-tête de table très sollicités).

Script

-- Buffer busy waits par fichier de données : nombre d'attentes et durée moyenne.
-- x$kcbfwait est une table fixe interne, à exécuter connecté avec les privilèges
-- nécessaires (SYS ou rôle disposant d'accès aux tables fixes).

SET LINESIZE 145
SET PAGESIZE 9999

COLUMN file_id      FORMAT 999           HEADING 'Fichier #'
COLUMN filename       FORMAT a55           HEADING 'Fichier'
COLUMN wait_count       FORMAT 999,999,999 HEADING 'Attentes'
COLUMN wait_time_cs       FORMAT 999,999,999 HEADING 'Durée totale (cs)'
COLUMN avg_wait_cs          FORMAT 999.999    HEADING 'Durée moy. (cs)'

SELECT
    a.indx + 1                                  file_id
  , b.name                                       filename
  , a.count                                      wait_count
  , a.time                                       wait_time_cs
  , a.time / NULLIF(a.count, 0)                  avg_wait_cs
FROM
    x$kcbfwait a
  , v$datafile b
WHERE
      a.indx  < (SELECT COUNT(*) FROM v$datafile)
  AND a.indx + 1 = b.file#
ORDER BY
    a.time DESC
/

Les durées sont en centièmes de seconde, cumulées depuis le démarrage de l'instance. Pour une analyse plus fine (répartition par bloc, par plage temporelle), les vues modernes v$file_histogram et l'Active Session History (v$active_session_history filtrée sur event = 'buffer busy waits') ou les rapports AWR complètent avantageusement ce script.

Voir aussi