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