SGA usage

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Voir aussi SGA · Instance · Sp auto

SGA usage est un script de diagnostic qui affiche l'occupation mémoire réelle de la SGA d'une instance, zone par zone (cache de buffers, shared pool, large pool, java pool, tampon de redo, SGA fixe), puis le détail du shared pool (library cache, dictionary cache, mémoire libre, zone SQL). Complète la page SGA, qui présente l'architecture et les paramètres de dimensionnement, avec un outil pour observer les valeurs effectivement allouées via v$sgastat.

(à vérifier selon version) : ce script date d'une période où le nom de la statistique associée au cache de buffers dans v$sgastat était db_block_buffers — sur des versions plus récentes (l'allocation moderne du cache passe par db_cache_size/sga_target), ce nom peut avoir changé côté v$sgastat et la première requête peut ne rien remonter pour cette ligne. En cas de résultat vide sur la ligne « DB Buffer Cache », inspecter directement select * from v$sgastat where pool is null; pour retrouver le nom courant, ou utiliser plus simplement v$sgainfo/v$sga pour une vue d'ensemble moderne indépendante de la version.

Script

SET ECHO OFF
SET FEEDBACK OFF
SET LINESIZE 512

PROMPT --------------------------------
PROMPT - Occupation mémoire de la SGA -
PROMPT --------------------------------

COLUMN dummy      NOPRINT
COLUMN area       FORMAT a20 HEADING 'Zones principales de la SGA'
COLUMN name       FORMAT a20
COLUMN pool       FORMAT a20
COLUMN bytes      FORMAT 999,999,999,999
COLUMN "sum(bytes)" FORMAT 999,999,999,999

BREAK ON report
COMPUTE SUM OF "sum(bytes)" ON report

SELECT
   1 dummy,
   'DB Buffer Cache' area,
   name,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool IS NULL
AND
   name = 'db_block_buffers'
GROUP BY
   name
UNION ALL
SELECT
   2,
   'Shared Pool',
   pool,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool = 'shared pool'
GROUP BY
   pool
UNION ALL
SELECT
   3,
   'Large Pool',
   pool,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool = 'large pool'
GROUP BY
   pool
UNION ALL
SELECT
   4,
   'Java Pool',
   pool,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool = 'java pool'
GROUP BY
   pool
UNION ALL
SELECT
   5,
   'Redo Log Buffer',
   name,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool IS NULL
AND
   name = 'log_buffer'
GROUP BY
   name
UNION ALL
SELECT
   6,
   'Fixed SGA',
   name,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool IS NULL
AND
   name = 'fixed_sga'
GROUP BY
   name
ORDER BY
   4 DESC;

COLUMN area FORMAT a20 HEADING 'Détail du Shared Pool'

PROMPT ----------------------------
PROMPT -- Détail du pool partagé --
PROMPT ----------------------------

SELECT
   'Shared Pool' area,
   name,
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool = 'shared pool'
AND
   name IN ('library cache','dictionary cache','free memory','sql area')
GROUP BY
   name
UNION ALL
SELECT
   'Shared Pool' area,
   'miscellaneous',
   sum(bytes)
FROM
   v$sgastat
WHERE
   pool = 'shared pool'
AND
   name NOT IN ('library cache','dictionary cache','free memory','sql area')
GROUP BY
   pool
ORDER BY
   3 DESC;

Voir aussi

  • SGA — architecture et paramètres de dimensionnement
  • Instance — instance Oracle
  • Sp auto — automatisation Statspack, autre volet du suivi de performance