Perf top 10 procedures
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Domaine | Performance |
| Voir aussi | Perf top 10 tables |
Perf top 10 procedures liste les 10 objets PL/SQL (fonctions, packages, corps de package, procédures, triggers) les plus exécutés actuellement présents dans le cache d'objets de la base (v$db_object_cache).
Script
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY OFF
COLUMN ptyp FORMAT a13 HEADING 'Type d''objet'
COLUMN obj FORMAT a42 HEADING 'Objet'
COLUMN noe FORMAT 999,999,999,999,999 HEADING 'Exécutions'
BREAK ON report
COMPUTE SUM OF noe ON report
SELECT ptyp, obj, noe
FROM (
SELECT
o.type AS ptyp
, o.owner || '.' || o.name AS obj
, o.executions AS noe
FROM v$db_object_cache o
WHERE o.type IN ('FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'TRIGGER')
ORDER BY o.executions DESC
)
WHERE ROWNUM <= 10
/
Le script d'origine construisait un ordre décroissant via l'astuce 0 - executions mais sans jamais poser de vrai ORDER BY avant d'appliquer WHERE rownum <= 10 : le « top 10 » retourné dépendait de l'ordre physique de lecture de v$db_object_cache, pas du nombre d'exécutions. La requête ci-dessus trie explicitement (ORDER BY o.executions DESC) dans la vue en ligne avant de restreindre à 10 lignes — c'est le motif standard « Top-N » en Oracle (le tri est évalué avant que ROWNUM ne soit assigné en sortie).
Interprétation
v$db_object_cachereflète le contenu actuel de la library cache : le compteurexecutionsrepart de zéro si l'objet est vieilli/rechargé (par manque de place dans le shared pool, ou après unDDLinvalidant le plan). Ce n'est donc pas un cumul fiable depuis le démarrage de l'instance, contrairement àv$sysstat.- Pour un historique fiable et non tributaire du contenu courant du cache, préférer une source AWR/Statspack (si licence Diagnostics Pack disponible) plutôt que ce script pour des analyses de tendance dans la durée.
- Utile en revanche pour un diagnostic « à chaud » : identifier immédiatement quel objet PL/SQL concentre l'activité au moment de l'exécution du script.
Voir aussi
- Perf top 10 tables — même principe côté tables, avec détail par type d'opération DML.