Dba object cache
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Domaine | Administration (mémoire partagée / library cache) |
| Voir aussi | Dba object summary · Dba plsql package size |
Dba object cache interroge directement la structure interne x$kglob (library cache du shared pool) pour lister tous les objets actuellement en cache : curseurs, tables, packages, triggers... avec leur empreinte mémoire, leur nombre de chargements/exécutions et leurs verrous/épingles (locks/pins).
C'est un diagnostic plus bas niveau que v$db_object_cache (qui offre les mêmes informations de façon plus lisible) : ici, les codes numériques internes de namespace et de type sont décodés explicitement, ce qui documente au passage la table de correspondance des types d'objets du library cache.
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 : Summary of Objects in the Shared Pool Cache |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF
COLUMN inst_id HEAD "Inst.|ID"
COLUMN owner FORMAT a10 HEAD "Owner"
COLUMN name FORMAT a30 HEAD "Name"
COLUMN namespace FORMAT a25 HEAD "Namespace"
COLUMN type FORMAT a18 HEAD "Type"
COLUMN sharable_mem FORMAT 99,999,999,999 HEAD "Sharable|Memory"
COLUMN loads HEAD "Loads"
COLUMN executions FORMAT 99,999,999 HEAD "Executions"
COLUMN locks HEAD "Locks"
COLUMN pins HEAD "Pins"
COLUMN kept FORMAT a5 HEAD "Kept?"
BREAK ON report
COMPUTE sum OF sharable_mem ON report
DEFINE spool_file=shared_pool_object_cache.lst
SPOOL &spool_file
SELECT
inst_id inst_id
, kglnaown owner
, kglnaobj name
, DECODE(kglhdnsp
, 0 , 'CURSOR'
, 1 , 'TABLE/PROCEDURE'
, 2 , 'BODY'
, 3 , 'TRIGGER'
, 4 , 'INDEX'
, 5 , 'CLUSTER'
, 6 , 'OBJECT'
, 13, 'JAVA SOURCE'
, 14, 'JAVA RESOURCE'
, 19, 'SUMMARY'
, 20, 'DIMENSION'
, 21, 'APP CONTEXT'
, 22, 'STORED OUTLINE'
, 23, 'RULESET'
, 24, 'RSRC PLAN'
, 25, 'RSRC CONSUMER GROUP'
, 'INVALID NAMESPACE'
) namespace
, DECODE(BITAND(kglobflg, 3)
, 0, 'NOT LOADED'
, 2, 'NON-EXISTENT'
, 3, 'INVALID STATUS'
, DECODE(kglobtyp
, 0 , 'CURSOR'
, 1 , 'INDEX'
, 2 , 'TABLE'
, 3 , 'CLUSTER'
, 4 , 'VIEW'
, 5 , 'SYNONYM'
, 6 , 'SEQUENCE'
, 7 , 'PROCEDURE'
, 8 , 'FUNCTION'
, 9 , 'PACKAGE'
, 11, 'PACKAGE BODY'
, 12, 'TRIGGER'
, 13, 'TYPE'
, 14, 'TYPE BODY'
, 15, 'OBJECT'
, 16, 'USER'
, 17, 'DBLINK'
, 22, 'LIBRARY'
, 23, 'DIRECTORY'
, 24, 'QUEUE'
, 'INVALID TYPE'
)
) type
, kglobhs0 + kglobhs1 + kglobhs2 + kglobhs3 + kglobhs4 + kglobhs5 + kglobhs6 sharable_mem
, kglhdldc loads
, kglhdexc executions
, kglhdlkc locks
, kglobpc0 pins
, DECODE(kglhdkmk, 0, 'NO', 'YES') kept
FROM x$kglob
/
SPOOL OFF
SET TERMOUT ON
PROMPT Report written to &spool_file
Colonnes / sortie
- Owner / Name — propriétaire et nom de l'objet en cache.
- Namespace — catégorie interne de l'objet (curseur, table/procédure, corps de package, trigger...).
- Type — type précis décodé (PACKAGE, PACKAGE BODY, PROCEDURE, VIEW...).
- Sharable Memory — mémoire occupée dans le shared pool par cet objet.
- Loads — nombre de (re)chargements depuis le dictionnaire de données ; des loads répétés sur le même objet signalent souvent des invalidations/expulsions à répétition (shared pool trop petit, ou objet trop souvent invalidé).
- Executions — nombre d'exécutions du curseur/objet.
- Locks / Pins — verrous et épingles en cours, empêchant l'expulsion de l'objet du cache tant qu'ils sont posés.
- Kept? — objet marqué "conservé" en mémoire via
DBMS_SHARED_POOL.KEEP(protège les gros packages sensibles des expulsions liées à la fragmentation du shared pool).
La liste des codes de namespace/type a été réduite ici aux valeurs les plus courantes en environnement applicatif classique ; x$kglob en couvre davantage (types liés à Java, à la réplication, aux profils de sécurité...), rarement rencontrés en usage courant.
Voir aussi
- Dba object summary — vue d'ensemble du nombre d'objets par type (dictionnaire, pas cache mémoire)
- Dba plsql package size — empreinte mémoire détaillée des corps de package