Flávio, Procure sobre deallocate unused.
http://www.idevelopment.info/data/Oracle/DBA_tips/Database_Administrat ion/DBA_22.shtml Abs --- Em oracle_br@yahoogrupos.com.br, "Flavio Uyemura" <[EMAIL PROTECTED]> escreveu > > 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" <fcuyemura@> > >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