Inicio » Oracle » SQL*Plus » Como se tracea y se obtiene el plan de ejecución de una sentencia desde SQL*Plus

Como se tracea y se obtiene el plan de ejecución de una sentencia desde SQL*Plus

Metódo 1: Autotrace

Cuando la opción AUTOTRACE está activada, SQL*Plus imprimirá el EXPLAIN PLAN y las estadísticas de ejecución para después de la sentencia SQL. Como en el ejemplo:

SQL> set autotrace on
SQL> select * from dept where deptno = 40;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        40 OPERATIONS     BOSTON
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=18)
   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
   2    1     INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          2  consistent gets
          0  physical reads
          0  redo size
        499  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

Para activar esta opcion es necesario seguir los siguientes pasos:
  Ejecutar el script PLUSTRCE.SQL como usuario SYS. Este script está localizado en $ORACLE_HOME/sqlplus/admin directory.
  Crear la tabla PLAN_TABLE ejecutando el script UTLXPLAN.SQL. Situado en el directorio $ORACLE_HOME/rdbms/admin.
  Utilizar el comando “SET AUTOTRACE ON” para tracear la ejecución de SQL. Este comando mostrara el plan de ejecución y traceo a alto nivel después de los resultados de la consulta.

Metodo 2: Paquete DBMS_XPLAN

SQL> EXPLAIN PLAN FOR select * from dept where deptno = 40;
Explained.
SQL> set linesize 132
SQL> SELECT * FROM TABLE( dbms_xplan.display);
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------
Plan hash value: 2852011669
---------------------------------------------------------------------------------------
| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |         |     1 |    20 |     1   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("DEPTNO"=40)
14 rows selected.

Fuente:  Documento SQL*Plus FAQ

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s