Hamilton,

Se você observou a documentação diz que a opção de "DROP STORAGE" é 
utilizada por default, em caso de omissão, portanto no exemplo que eu 
apresentei estou utilizando esta opção.

Abraços,
Flávio


>From: "hribeiro01" <[EMAIL PROTECTED]>
>Reply-To: oracle_br@yahoogrupos.com.br
>To: oracle_br@yahoogrupos.com.br
>Subject: [oracle_br] Re: TRUNCATE TABLE BUG ?
>Date: Fri, 17 Nov 2006 13:43:02 -0000
>
>Flávio,
>
>   Procure sobre reuse storage e drop storage;
>
>   http://www-eleves-isia.cma.fr/documentation/OracleDoc/TRUNCATE.html
>
>Abs
>
>--- Em oracle_br@yahoogrupos.com.br, "Flavio Uyemura" <[EMAIL PROTECTED]>
>escreveu
> >
> > Pessoal,
> >
> > Tenho processos de ETL que fazem basicamente o seguinte:
> >
> > 1) Carregam os dados de arquivos em formato texto para tabelas no
>Oracle,
> > utilizando o SQL*Loader com a opção de TRUNCATE e no modo DIRECT
>PATH.
> >
> > 2) A partir destas tabelas de stage (área com dados brutos)
>carregadas, um
> > outro processo aplica transformações nestes dados, e insere em
>outras
> > tabelas de fatos e dimensões. Utilizando a hint /*+ PARALLEL
>(<nometabela>,
> > default, default) */
> >
> > 3) Após o passo 2, as tabelas de stage carregadas são truncadas, e
>este
> > ciclo repete-se diariamente.
> >
> > Acontece que quando as tabelas de stage são truncadas (passo 1 e
>3), não
> > ocorre a desalocação de espaço.
> >
> > A tablespace usada é do tipo LMT (Locally Managed Tablespace) com
>SEGMENT
> > SPACE
> > MANAGEMENT AUTO e UNIFORM SIZE de 1M.
> >
> > Segue exemplo para ilustrar o problema:
> >
> >
> > 11:13:25 SQL> create table st_teste
> > 11:13:33   2  (
> > 11:13:33   3    codigo     number,
> > 11:13:33   4    nome       varchar2(128),
> > 11:13:33   5    tipo       varchar2(18),
> > 11:13:33   6    dt_criacao date
> > 11:13:33   7  )
> > 11:13:33   8  tablespace tbsp_stage_data;
> >
> > Tabela criada.
> >
> > 11:13:33 SQL> select segment_name, segment_type, tablespace_name,
>blocks,
> > extents, min_extents
> > 11:13:38   2    from user_segments
> > 11:13:38   3   where segment_name = 'ST_TESTE';
> >
> > SEGMENT_NAME         SEGMENT_TYPE
>TABLESPACE_NAME
> > BLOCKS    EXTENTS MIN_EXTENTS
> > -------------------- ------------------ ----------------------------
>--
> > ---------- ---------- -------
> > ST_TESTE             TABLE
>TBSP_STAGE_DATA
> >    32          1           1
> >
> > 11:13:39 SQL>
> > 11:13:40 SQL> insert /*+ PARALLEL(st_teste, default, default) */
>into
> > st_teste
> > 11:13:45   2  select object_id, object_name, object_type, created
> > 11:13:45   3    from user_objects;
> >
> > 182 linhas criadas.
> >
> > 11:13:45 SQL> commit;
> >
> > Validação completa.
> >
> > 11:13:45 SQL> declare
> > 11:13:51   2  begin
> > 11:13:52   3  for i in 1..10 loop
> > 11:13:52   4  insert /*+ PARALLEL(st_teste, default, default) */
>into
> > st_teste
> > 11:13:52   5  select /*+ PARALLEL(st_teste, default, default) */
> > 11:13:52   6         *
> > 11:13:52   7    from st_teste;
> > 11:13:52   8  end loop;
> > 11:13:52   9  commit;
> > 11:13:52  10  end;
> > 11:13:52  11  /
> >
> > Procedimento PL/SQL concluído com sucesso.
> >
> > 11:13:54 SQL> select count(*) from st_teste;
> >
> >   COUNT(*)
> > ----------
> >     186368
> >
> > 11:14:01 SQL> select segment_name, segment_type, tablespace_name,
>blocks,
> > extents, min_extents
> > 11:14:10   2    from user_segments
> > 11:14:10   3   where segment_name = 'ST_TESTE';
> >
> > SEGMENT_NAME         SEGMENT_TYPE
>TABLESPACE_NAME
> > BLOCKS    EXTENTS MIN_EXTENTS
> > -------------------- ------------------ ----------------------------
>--
> > ---------- ---------- -------
> > ST_TESTE             TABLE
>TBSP_STAGE_DATA
> >   288          9           1
> >
> > 11:14:10 SQL> truncate table st_teste;
> >
> > Tabela truncada.
> >
> > 11:14:22 SQL> select count(*) from st_teste;
> >
> >   COUNT(*)
> > ----------
> >          0
> >
> > 11:14:28 SQL> select segment_name, segment_type, tablespace_name,
>blocks,
> > extents, min_extents
> > 11:14:34   2    from user_segments
> > 11:14:34   3   where segment_name = 'ST_TESTE';
> >
> > SEGMENT_NAME         SEGMENT_TYPE
>TABLESPACE_NAME
> > BLOCKS    EXTENTS MIN_EXTENTS
> > -------------------- ------------------ ----------------------------
>--
> > ---------- ---------- -------
> > ST_TESTE             TABLE
>TBSP_STAGE_DATA
> >   288          9           1
> >
> >
> > *** Veja o que acontece quando é utilizado o ALTER TABLE MOVE ***
> >
> > 11:17:08 SQL> alter table st_teste move;
> >
> > Tabela alterada.
> >
> > 11:17:23 SQL> select segment_name, segment_type, tablespace_name,
>blocks,
> > extents, min_extents
> > 11:17:33   2    from user_segments
> > 11:17:33   3   where segment_name = 'ST_TESTE';
> >
> > SEGMENT_NAME         SEGMENT_TYPE
>TABLESPACE_NAME
> > BLOCKS    EXTENTS MIN_EXTENTS
> > -------------------- ------------------ ----------------------------
>--
> > ---------- ---------- -------
> > ST_TESTE             TABLE
>TBSP_STAGE_DATA
> >    32          1           1
> >
> >
> > *** O número de extents voltou ao min_extents ***
> >
> > A pergunta que não quer calar...é algum BUG no TRUNCATE TABLE ?
> >
> >
> > 11:17:33 SQL> select * from v$version
> > 11:20:30   2  ;
> >
> > BANNER
> > ----------------------------------------------------------------
> > Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
> > PL/SQL Release 9.2.0.6.0 - Production
> > CORE    9.2.0.6.0       Production
> > TNS for Solaris: Version 9.2.0.6.0 - Production
> > NLSRTL Version 9.2.0.6.0 - Production
> >
> > 11:20:32 SQL>
> >
> > Abraços,
> > Flávio
> >
> > _________________________________________________________________
> > Descubra aqui como mandar Torpedos Messenger!
> > http://www.msn.com.br/artigos/maguire/default.asp
> > http://www.msn.com.br/artigos/maguire/default.asp
> >
>
>
>
>
>
>Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
>--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
>Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>--------------------------------------------------------------------------------------------------------------------------
>O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/
>------------------------------------------------------------------------------------------------------------------------
>Links do Yahoo! Grupos
>
>
>

_________________________________________________________________
Chegou o Windows Live Spaces com rede social. Confira 
http://spaces.live.com/



Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
  
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a