Una mejora que no había visto mencionada en otros blogs o artículos hasta que fue publicada por Tim Hall en su blog Oracle-Base, es la posibilidad de definir una tabla como de tipo "Staging" al momento de crearla. Esto hace que la tabla sea optimizada automáticamente para recibir datos en forma rápida y para manejar datos volátiles, como veremos a continuación.
Sintaxis
Se puede crear o modificar una tabla para que sea de tipo Staging:
-- Crear una tabla como Staging:CREATE TABLE staging_table (col1 number, col2 varchar2(100)) FOR STAGING;-- Modificar una tabla normal a Staging:ALTER TABLE normal_table FOR STAGING;-- Modificar una tabla Staging a normal:ALTER TABLE normal_table [NOT] FOR STAGING;
Características
Al definir una tabla como "Staging", la misma tiene las siguientes características:
- La compresión se desactiva y no se permite explícitamente para cualquier carga de datos futura en la tabla y sus particiones y subparticiones. Cambiar una tabla existente al tipo Staging afecta el almacenamiento de los datos existentes, solo afectará las cargas de datos futuras.
- No se puede cambiar los atributos predeterminados de una tabla Staging, sus particiones o subparticiones, o cargas de datos futuras usando ALTER TABLE.
- No puede realizar ninguna operación de mantenimiento de partición que mueva datos y los comprima usando ALTER TABLE.
- No puede particionar una tabla Staging ni especificar compresión en ninguna de sus particiones.
- El muestreo dinámico (Dynamic Sampling) se utiliza para consultas realizadas a una tabla Staging. No puede recopilar estadísticas sobre las mismas, ni sobre ninguna de sus particiones.
- Al eliminar una tabla Staging, se eliminará inmediatamente, quedar en la papelera de reciclaje.
Cambiar una tabla Normal a Staging
Al cambiar una tabla existente con ALTER TABLE t FOR STAGING, la misma ahora tiene todas las características de una tabla de Staging creada con CREATE TABLE t FOR STAGING.
Cambiar una tabla Staging a Normal
Al cambiar una tabla creada como Staging a una tabla normal usando la cláusula NOT FOR STAGING, la misma permite:
- Habilitar la compresión explícitamente en la tabla, sus particiones y cargas de datos futuras.
- Recopilar estadísticas en la tabla de forma explícita o utilizando una aplicación de recopilación de estadísticas.
- Al eliminar la tabla, puede mantenerse en la papelera de reciclaje.
Vistas del Diccionario de Datos
Las vistas USER_TABLES, ALL_TABLES y DBA_TABLES incorporan una nueva columna "STAGING" que indica si la tabla es de tipo Staging indicado con el valor "YES" o el valor "NO" en caso de no serlo.
Esta nueva característica, que no fue destacada en muchos lugares, facilita notablemente las tareas de carga masivas de datos típicas de los Data Warehouse y de procesos de ETL/ELT.