A continuación la traducción de un instaresante post de Alex Zaballa de Brasil sobre Deferred Segment Creation:
Esta funcionalidad se ha introducido en Oracle 11G R2 y permite que los segmentos de tablas y sus objetos dependientes (LOBs, índices, etc.) no sean creados hasta que una primera fila sea introducida en la tabla.
Esta funcionalidad puede ser controlada por el parámetro de inicialización DEFERRED_SEGMENT_CREATION, que es definido como TRUE por defeto. Este valor también puede ser cambiado en una sesión, utilizando o ALTER SESSION.
SQL> show parameter DEFERRED_SEGMENT_CREATION
NAME TYPE VALUE
------------------------------------ ------------------- -----
deferred_segment_creation boolean TRUE
SQL> create table tabla_test(col1 number);
Table created.
SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';
SQL> insert into tabla_test values(1);
1 row created.
SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';
no rows selected
SEGMENT_NAME SEGMENT_TYPE
-------------------------------- ------------
tabla_test TABLE
1 fila seleccionada.
Podemos especificar eso en la creación de la tabla, utilizando SEGMENT CREATION DEFERRED o SEGMENT CREATION IMMEDIATE.
SQL> create table tabla_test2(col1 number) SEGMENT CREATION IMMEDIATE;
Table created.
SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test2';
no rows selected
SEGMENT_NAME SEGMENT_TYPE
-------------------------------- ------------
tabla_test2 TABLE
1 fila seleccionada.
Para eliminar los segmentos associados a una tabla, se agregó la cláusula DROP ALL STORAGE o TRUNCATE TABLE (disponible en 11.2.0.2).
SQL> TRUNCATE TABLE tabla_test DROP ALL STORAGE;
Table truncated.
SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';
no rows selected
No hay comentarios:
Publicar un comentario