Si todo lo que ejecutó fueron las dos declaraciones en su pregunta:
select /*+ gather_plan_statistics */ * from emp; select * from table(dbms_xplan.display(FORMAT=>'ALLSTATS LAST'));
Entonces creo que su problema es su uso de DBMS_XPLAN.DISPLAY
. De la forma en que lo está utilizando, está imprimiendo el plan de la última declaración que explicó, no la última declaración que ejecutó. Y "explicar" no ejecutará la consulta, por lo que no se beneficiará de un gather_plan_statistics
pista.
Esto funciona para mí en 12c:
select /*+ gather_plan_statistics */ count(*) from dba_objects;
SELECT *
FROM TABLE (DBMS_XPLAN.display_cursor (null, null, 'ALLSTATS LAST'));
es decir, display_cursor
en lugar de simplemente display
.