Dba plsql package size

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Administration (mémoire PL/SQL)
Voir aussi Dba object cache

Dba plsql package size classe les corps de package (PACKAGE BODY) par taille mémoire totale, du plus gros au plus petit — pratique pour identifier rapidement les plus gros consommateurs de shared pool côté code PL/SQL compilé.

Script

SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT RPAD(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON

PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report   : PL/SQL Package Body Size Report                             |
PROMPT | Instance : &current_instance                                          |
PROMPT +------------------------------------------------------------------------+

SET ECHO      OFF
SET FEEDBACK  6
SET HEADING   ON
SET LINESIZE  180
SET PAGESIZE  50000
SET VERIFY    OFF

COLUMN owner       FORMAT a20             HEAD "Owner"
COLUMN name        FORMAT a35             HEAD "Name"
COLUMN type        FORMAT a18             HEAD "Type"
COLUMN total_bytes FORMAT 999,999,999,999 HEAD "Total bytes"

SELECT
    owner
  , name
  , type
  , source_size + code_size + parsed_size + error_size total_bytes
FROM dba_object_size
WHERE      type = 'PACKAGE BODY'
       AND owner NOT IN ('SYS')
ORDER BY total_bytes DESC;

Le tri par position (ORDER BY 4 DESC dans le script d'origine) a été remplacé par le nom de colonne total_bytes, plus lisible et moins fragile si les colonnes de la requête venaient à être réordonnées.

Colonnes / sortie

  • Owner / Name — propriétaire et nom du package.
  • Type — ici toujours PACKAGE BODY (le script exclut volontairement les autres types via le filtre).
  • Total bytes — somme de quatre composantes suivies par dba_object_size :
    • source_size — taille du code source stocké.
    • parsed_size — taille de la représentation "parsée" du code.
    • code_size — taille du p-code exécutable.
    • error_size — taille des informations d'erreur de compilation éventuelles.

Un gros total ici ne pose pas de problème en soi (le shared pool est justement fait pour ça), mais devient un point d'attention si le shared pool est sous-dimensionné et sujet à des expulsions/rechargements fréquents — voir Dba object cache pour repérer ces rechargements (colonne Loads).

Voir aussi

  • Dba object cache — objets réellement en cache à un instant T, avec compteurs de chargement