2010-12-22 15 views
6

que suelen generar planes explicar mediante el siguiente en sqlplus:cómo generar explicar el plan para todo procedimiento almacenado

SET AUTOTRACE ON 
SET TIMING ON 
SET TRIMSPOOL ON 
SET LINES 200 
SPOOL filename.txt 
SET AUTOTRACE TRACEONLY; 

{query goes here} 

SPOOL OFF 
SET AUTOTRACE OFF 

pero lo que si quiero generar explicar el plan para un procedimiento almacenado?

¿Hay alguna manera de generar un plan de explicación para todo el procedimiento almacenado? El SP no tiene parámetros de entrada/salida.

Respuesta

6

Lo que está generando se llama correctamente un "plan de ejecución". "Explicar plan" es un comando utilizado para generar y ver un plan de ejecución, de la misma manera que lo hace AUTOTRACE TRACEONLY en su ejemplo.

Por definición, un plan de ejecución es para una sola instrucción de SQL. Un bloque PL/SQL no tiene un plan de ejecución. Si contiene una o más declaraciones SQL, cada una de ellas tendrá un plan de ejecución.

Una opción es extraer manualmente las sentencias SQL del código PL/SQL y usar el proceso que ya ha mostrado.

Otra opción es realizar un seguimiento SQL activo y luego ejecutar el procedimiento. Esto generará un archivo de rastreo en el servidor que contiene los planes de ejecución para todas las sentencias ejecutadas en la sesión. El seguimiento está en forma bastante cruda, por lo que generalmente es más fácil formatearlo utilizando la herramienta TKPROF de Oracle; también hay varias herramientas de terceros que procesan estos archivos de rastreo también.

+0

Ok. Iré por el camino del extracto del manual. Sin embargo, ahora qué sucede si tengo algunos bloques de bucle en el procedimiento almacenado. ¿Cómo ejecutaré los planes de ejecución para esos bloques de bucle ya que tienen un BEGIN y un END? –

1
Hi I have done like below for the stored procedure: 
SET AUTOTRACE ON 
SET TIMING ON 
SET TRIMSPOOL ON 
SET LINES 200 
SPOOL filename.txt 
SET AUTOTRACE TRACEONLY; 
@your stored procedure path 
SPOOL OFF 
SET AUTOTRACE OFF 

And got the below statistics: 

    Statistics 
----------------------------------------------------------- 
       6 CPU used by this session 
       8 CPU used when call started 
       53 DB time 
       6 Requests to/from client 
      188416 cell physical IO interconnect bytes 
      237 consistent gets 
      112 consistent gets - examination 
      237 consistent gets from cache 
      110 consistent gets from cache (fastpath) 
      2043 db block gets 
       1 db block gets direct 
      2042 db block gets from cache 
      567 db block gets from cache (fastpath) 
       27 enqueue releases 
       27 enqueue requests 
       4 messages sent 
       31 non-idle wait count 
       19 non-idle wait time 
       44 opened cursors cumulative 
       2 opened cursors current 
       22 physical read total IO requests 
      180224 physical read total bytes 
       1 physical write total IO requests 
      8192 physical write total bytes 
       1 pinned cursors current 
      461 recursive calls 
       4 recursive cpu usage 
      2280 session logical reads 
     1572864 session pga memory 
       19 user I/O wait time 
       9 user calls 
       1 user commits 
No Errors. 
Autotrace Disabled 
Cuestiones relacionadas