Perf db block buffer usage

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Voir aussi Perf hit ratio system · Perf sga usage · Perf shared pool memory

Perf db block buffer usage répartit les blocs du database buffer cache selon leur état interne (libre, en cours de modification, non modifié depuis sa dernière lecture, en cours de lecture) en interrogeant x$bh, la table fixe interne qui sous-tend le buffer cache. Cette table fixe n'est accessible qu'à SYS — c'est la limite principale de ce script.

Script

-- Répartition des blocs du buffer cache par état. À exécuter connecté en SYS
-- (x$bh est une table fixe interne, non accessible aux autres comptes).

SET LINESIZE 135
SET PAGESIZE 9999
SET VERIFY OFF

COLUMN block_status HEADING 'État du bloc'
COLUMN block_count    HEADING 'Nombre'

SELECT
    DECODE(state, 0, 'Libre',
                  1, DECODE(lrba_seq, 0, 'Disponible', 'En cours de modification'),
                  2, 'Non modifié',
                  3, 'En cours de lecture',
                     'Autre')  block_status
  , COUNT(*)                  block_count
FROM
    sys.x$bh
GROUP BY
    DECODE(state, 0, 'Libre',
                  1, DECODE(lrba_seq, 0, 'Disponible', 'En cours de modification'),
                  2, 'Non modifié',
                  3, 'En cours de lecture',
                     'Autre')
/

Pour un diagnostic équivalent sans se connecter en SYS, la vue publique v$bh (colonne status : FREE, XCUR, SCUR, CR, READ, MREC, IREC) donne une information proche, bloc par bloc, sans dépendre d'une table x$ non documentée.

Voir aussi