[ 2018-06-29 ]

Como verificar, habilitar y deshabilitar paralelismo SQL a nivel sesión

Para saber si está habilitada o no la ejecución de sentencias SQL con paralelismo en nuestra sesión,  podemos consultar la vista v$session. Con sentencias SQL me refiero a operaciones DDL, DML o consultas (queries). Necesitamos como mínimo tener privilegios de select_catalog_role o SELECT sobre la vista para poder hacerlo.
Los campos que nos muestran la información necesaria son:

PDML_ENABLED y  PDML_STATUS: Indican si las operaciones DML en paralelo esta habilitadas o no (ENABLE/DISABLE). Por defecto están deshabilitadas (DISABLED).
PDDL_STATUS:  Indica si está habilitado o no (ENABLE/DISABLE)  el paralelismo para sentencias DDL. Por defecto está habilitado (ENABLED).
PQ_STATUS:  Indica si el “parallel query” está habilitado o deshabilitado (ENABLE/DISABLE).  Por defecto está habilitado (ENABLED)

Veamos un ejemplo de como consultar la vista:

SQL> select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS
           from v$session where sid = (select sid from v$mystat where rownum = 1);

PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUS
------------ ----------- ----------- ---------
NO           DISABLED    ENABLED     ENABLED

 Si queremos habilitar o deshabilitar alguna de las opciones, podemos hacerlo a nivel sesión con “alter session”

En el siguiente ejemplo habilitamos parallel DML que por default viene deshabilitado:

SQL> alter session enable parallel dml;

Session altered

Si verificamos nuevamente:

SQL> select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS
          from v$session where sid = (select sid from v$mystat where rownum = 1);

PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUS
------------ ----------- ----------- ---------
YES          ENABLED     ENABLED     ENABLED

Vemos que PDML_ENABLED está en YES y PDML_STATUS en ENABLED.  Ahora todo el paralelismo está habilitado (DDL, DML, query).

Si queremos  deshabilitar alguna  o todas las opciones:

Deshabilitar “Parallel DML”

SQL> alter session disable parallel dml;
Session altered.

SQL> select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS
           from v$session where sid = (select sid from v$mystat where rownum = 1);

PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUS
------------ ----------- ----------- ---------
NO           DISABLED    ENABLED     ENABLED

Deshabilitar “Parallel DDL”

SQL> alter session disable parallel ddl;
Session altered.

SQL> select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS
          from v$session where sid = (select sid from v$mystat where rownum = 1);

PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUS
------------ ----------- ----------- ---------
NO           DISABLED    DISABLED    ENABLED

Deshabilitar “Parallel Query”

SQL> alter session disable parallel query;
Session altered.


SQL> select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS
           from v$session where sid = (select sid from v$mystat where rownum = 1);

PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUS
------------ ----------- ----------- ---------
NO           DISABLED    DISABLED    DISABLED

No hay comentarios:

Publicar un comentario