Pular para o conteúdo

DEFERRED SEGMENT CREATION

DEFERRED SEGMENT CREATION

Esta funcionalidade foi introduzida no Oracle 11G R2 e permite que os segmentos para tabelas e seus objetos dependentes (LOBs, índices) não sejam criados até que a primeira linha seja inserida na tabela.

Esta funcionalidade pode ser controlada pelo parâmetro de inicialização DEFERRED_SEGMENT_CREATION, que é definido como TRUE por padrão. Este valor também pode ser alterado somente para a sessão, utilizando o ALTER SESSION.

SQL> show parameter DEFERRED_SEGMENT_CREATION

NAME                                 TYPE                VALUE
------------------------------------ ------------------- -----
deferred_segment_creation            boolean             TRUE

SQL> create table TABELA_TESTE(coluna1 number);
Table created.

SQL> SELECT segment_name,
            segment_type
     FROM user_segments
     WHERE segment_name='TABELA_TESTE';

no rows selected

SQL> insert into TABELA_TESTE values(1);
1 row created.

SQL> SELECT segment_name,
            segment_type
     FROM user_segments
     WHERE segment_name='TABELA_TESTE';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
TABELA_TESTE                     TABLE

1 linha seleccionada.

Podemos especificar isso na criação da tabela, utilizando SEGMENT CREATION DEFERRED ou SEGMENT CREATION IMMEDIATE.

SQL> create table TABELA_TESTE2(coluna1 number) SEGMENT CREATION IMMEDIATE;
Table created.

SQL> SELECT segment_name,
            segment_type
     FROM user_segments
     WHERE segment_name='TABELA_TESTE2';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
TABELA_TESTE2                    TABLE
1 linha seleccionada.

Para apagar os segmentos associados a tabela, foi adicionado a cláusula  DROP ALL STORAGE ao TRUNCATE TABLE (disponível no 11.2.0.2).

SQL> TRUNCATE TABLE tabela_teste DROP ALL STORAGE;
Table truncated.

SQL> SELECT segment_name,
            segment_type
     FROM user_segments
     WHERE segment_name='TABELA_TESTE';

no rows selected

Abraço

Alex Zaballa

Alex Zaballa

Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 15 anos, é ORACLE ACE Director, certificado OCM Database 11G / Cloud e conta com mais de 140 outras certificações em produtos da Oracle. Alex também é um dos fundadores do Grupo de Usuários Oracle de Angola (GUOA), participa do Grupo de Usuários de Tecnologia Oracle Brasil (GUOB) e é membro do time OraWorld.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress