DBAtlas · Atlas d'exploitation des bases de données

Afficher le plan d'exécution réel avec les statistiques row source (ALLSTATS LAST)

OraclePerformances

Commande

-- 1) Collect row source statistics (for this query only):
SET SERVEROUTPUT OFF
SELECT /*+ gather_plan_statistics */ customer_id, SUM(amount)
FROM   customer_app.sales
WHERE  created_at >= DATE '2026-06-01'
GROUP  BY customer_id;
-- or for the whole session: ALTER SESSION SET statistics_level = ALL;

-- 2) Plan of the last cursor run in the same session (E-Rows vs A-Rows):
SELECT *
FROM   TABLE(DBMS_XPLAN.DISPLAY_CURSOR(
         sql_id          => NULL,
         cursor_child_no => NULL,
         format          => 'ALLSTATS LAST +PEEKED_BINDS +OUTLINE'));

-- 3) A cursor from another session / from earlier:
SELECT *
FROM   TABLE(DBMS_XPLAN.DISPLAY_CURSOR('<sql_id>', NULL, 'ALLSTATS LAST +PEEKED_BINDS'));

Ce que fait la commande

EXPLAIN PLAN est une estimation ; ceci montre le plan réellement exécuté, avec Starts, E-Rows (estimation), A-Rows (réel), A-Time, Buffers et l'utilisation mémoire par étape. C'est le moyen le plus direct de trouver l'étape où commence l'erreur d'estimation de cardinalité.

Quand l'utiliser

Lors du tuning d'un SQL lent isolé, pour prouver le besoin de statistiques/histogrammes, et pour mesurer l'effet d'un hint ou d'un changement d'index.

Attention

Aucune licence requise. Avec SET SERVEROUTPUT ON, sql_id=>NULL affiche l'appel DBMS_OUTPUT comme dernier curseur ; mettez-le d'abord à OFF. N'activez pas statistics_level=ALL à l'échelle du système ; cela ajoute une surcharge CPU notable. Le hint modifie le texte SQL, qui reçoit donc un nouveau sql_id. L'utilisateur a besoin d'un accès en lecture à V$SQL_PLAN_STATISTICS_ALL (SELECT_CATALOG_ROLE).

Ouvrir dans DBAtlas →

Voir aussi