sql >> Base de Datos >  >> RDS >> Oracle

Creación de una tabla temporal global en Oracle

-Oracle nos permite  crear una tabla temporal .

-La definición de una tabla temporal es visible para todas las sesiones, pero los datos de una tabla temporal solo son visibles para la sesión que inserta los datos en la tabla.

-Tenemos que usar la instrucción CREATE GLOBAL TEMPORARY TABLE para crear una tabla temporal.

-La cláusula ON COMMIT indica si los datos de la tabla son específicos de la transacción (predeterminado) o específicos de la sesión

ELIMINAR FILAS

Esto crea una tabla temporal que es específica de la transacción. Una sesión se vincula a la tabla temporal con una primera inserción de transacciones en la tabla. El enlace desaparece al final de la transacción. La base de datos trunca la tabla (elimina todas las filas) después de cada confirmación.

CONSERVAR FILAS

Esto crea una tabla temporal que es específica de la sesión. Una sesión se vincula a la tabla temporal con la primera inserción en la tabla de la sesión. Este enlace desaparece al final de la sesión o al emitir un TRUNCATE de la tabla en la sesión. La base de datos trunca la tabla cuando finaliza la sesión.

Las tablas temporales son útiles en aplicaciones donde un conjunto de resultados debe almacenarse en búfer, quizás porque se construye ejecutando varias operaciones DML

CREAR TABLA TEMPORAL GLOBAL GL_DATA_TEMP
(startdate DATE,
enddate DATE,
gl_id CHAR(20))
ON COMMIT DELETE ROWS;

Se pueden crear índices en tablas temporales . También son temporales y los datos del índice tienen el mismo ámbito de sesión o transacción que los datos de la tabla subyacente.

Si la instrucción TRUNCATE se emite en una tabla temporal, solo se truncan los datos específicos de la sesión. No tiene efecto sobre los datos de otras sesiones.

Si revierte una transacción, los datos que ingresó se pierden, aunque la definición de la tabla persiste.

Los datos en las tablas temporales se almacenan en segmentos temporales en el espacio de tabla temporal que no genera ninguna rehacer, por lo que las operaciones que utilizan la tabla temporal global son relativamente más rápidas. Pero las operaciones de deshacer aún se generan en el tablespace de deshacer que tiene registro de rehacer. Por lo tanto, la operación de rehacer no se elimina por completo en las tablas temporales globales, pero son relativamente más bajas

Los datos de las tablas temporales se eliminan automáticamente al final de la sesión de la base de datos, incluso si finaliza de forma anormal.

Las vistas se pueden crear en tablas temporales y combinaciones de tablas temporales y permanentes. Pueden tener disparadores asociados con ellos

Con la versión 12.1 (base de datos 12c) de Oracle, se introdujo el concepto de deshacer temporal que permite que los segmentos de deshacer para las tablas temporales globales se almacenen en el espacio de tabla temporal. Esto permite que las tablas temporales globales se utilicen en bases de datos físicas en espera y bases de datos de solo lectura, además de eliminar la necesidad de crear rehacer.

ALTER SYSTEM SET TEMP_UNDO_ENABLED =TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED =FALSE;