Caro Silva, muito obrigado por suas considerações. Conforme mencionei (e me desculpe se não expliquei e acabei complicando) e pesquisas efetuadas apartir da sua sugestão podemos vir a ler o que Tom Kyle(http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1211797200346279484) e Don Burleson falam à respeito do assunto (http://dba-oracle.com/t_optimize_insert_sql_performance.htm). Só para termos uma noção. vc diz que: "visando tornar o insert mais rápido, o oracle ignora os blocos livres e insere o novo registro sempre no final da tabela, após a HWM." quanto que na verdade "Usando o append hint no insert, vc assegura que o Oracle sempre "eleve" o HWM da tabela pegando data blocks "frescos" (By using the append hint, you ensure that Oracle always grabs "fresh" data blocks by raising the high-water-mark for the table. Don Burlesson), e o Tom diz o seguinte: Insert /*+ APPEND */ - why it would be horrible for Oracle to make that the "default".
a) it isn't necessarily faster in general. It does a direct path load to disk - bypassing the buffer cache. There are many cases - especially with smaller sets - where the direct path load to disk would be far slower than a conventional path load into the cache. b) a direct path load always loads above (AQUI ENTENDA/INTERPRETE QUE ELE FAZ O QUE O Don MENCIONA, ELE "ELEVA" O HWM) the high water mark, since it is formatting and writing blocks directly to disk - it cannot reuse any existing space. Think about this - if you direct pathed an insert of a 100 byte row that loaded say just two rows - and you did that 1,000 times, you would be using at least 1,000 blocks (never reuse any existing space) - each with two rows. Now, if you did that using a conventional path insert - you would get about 70/80 rows per block in an 8k block database. You would use about 15 blocks. Which would you prefer? c) you cannot query a table after direct pathing into it until you commit. d) how many people can direct path into a table at the same time? One - one and only one. It would cause all modifications to serialize. No one else could insert/update/delete or merge into this table until the transaction that direct paths commits. Direct path inserts should be used with care, in the proper circumstances. A large load - direct path. But most of the time - conventional path. Espero ter colaborado.Abraço,Francisco. To: oracle_br@yahoogrupos.com.br From: jljlsi...@yahoo.com.br Date: Fri, 16 Mar 2012 10:41:47 -0300 Subject: Re: [oracle_br] Crescimento de tabela sem justificativa Caro amigo Petersen Jr. Talvez seja melhor você ler com atenção a informação sobre o uso do hint "append" no insert. Caso não conheça, procure conhecer. Pode ser útil, quando usado corretamente. On Mar 15, 2012, at 9:43 PM, Francisco Petersen Jr wrote: > > > > Caro Silva, conforme ... "Para esclarecimento: o inicial está com 10Mb, next > 1Mb, pctincrease 0 minextents 1 PCTFREE 0 PCTUSED 90" ... se não estou > enganado ... o oracle NÃO IGNORA OS BLOCOS LIVRES E INSERE O NOVO REGISTRO > SEMPRE NO FINAL DA TABELA ... o ORACLE faz exatamente aquilo que foi definido > em tempo pelos developers, analistas e dbas de aplicação ... = D !!! ... Att, > > > To: oracle_br@yahoogrupos.com.br > From: jljlsi...@yahoo.com.br > Date: Thu, 15 Mar 2012 18:11:30 -0300 > Subject: Re: [oracle_br] Crescimento de tabela sem justificativa > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Oi, Luciana. > > Uma situação que pode causar este comportamento é o insert com append. > > Quando usamos o hint append no insert, visando tornar o insert mais rápido, o > oracle ignora os blocos livres e insere o novo registro sempre no final da > tabela, após a HWM. > > Verifica se isto está ocorrendo. > > > > On Mar 15, 2012, at 2:52 PM, Luciana Missao Osako Camargo wrote: > > > >> Pessoal, > >> > >> Para esclarecimento: o inicial está com 10Mb, next 1Mb, pctincrease 0, > >> minextents 1. > >> PCTFREE 0 PCTUSED 90 > >> > >> Agradeço todas as contribuições, mas a minha dúvida maior é, como ele > >> chega a este tamanho se é feito DELETE (sem clausula nenhuma) e INSERT. > >> Não existe update ou delete com alguma cláusula. > >> De dados de fato só tem 200Mb. > >> Qual o motivo de chegar a 4Gb? > >> > >> Apenas um parenteses: não estou recebendo todos os e-mails da lista .... > >> > >> Obrigada > >> Luc > >> > >> Em 14 de março de 2012 18:09, Bruno Sales <brunosale...@gmail.com> escreveu: > >> > >>> ** > >>> > >>> > >>> De repente vc pode fazer o shrink da tabela, mas aí voce vai ter que > >>> verificar se o espaço dela é reusavel. > >>> alter table tabela enable row mevement; > >>> alter table tabela shrink space; > >>> > >>> Em 14 de março de 2012 16:20, [Paulo Sousa] <paulorso...@gmail.com > >>>> escreveu: > >>> > >>>> Luciana, > >>>> > >>>> não pode ter a ver com o initial e next extent (size) da tablespace onde > >>> a > >>>> tabela está? Já tentou levar essa tabela para uma outra tablespace com > >>>> definições diferentes dessa atual e verificar o comportamento da > >>> operação? > >>>> > >>>> Abraço. > >>>> > >>>> Paulo Sousa > >>>> paulorso...@gmail.com > >>>> ____________________________________ > >>>> "No caráter, na conduta, no estilo, em todas as coisas, a simplicidade é > >>> a > >>>> suprema virtude." (Henry Wadsworth) > >>>> > >>>> > >>>> > >>>> 2012/3/14 Luciana Missao Osako Camargo <lcama...@cpqd.com.br> > >>>> > >>>>> ** > >>>>> > >>>>> > >>>>> Pessoal, > >>>>> > >>>>> Não posso fazer o truncate, pois é parte de uma transação mais > >>> complexa. > >>>>> > >>>>> A alternativa q tenho é corrigir este comportamento, mas mantendo-se a > >>>>> transação. > >>>>> > >>>>> Luc > >>>>> > >>>>> Em 14 de março de 2012 16:03, Thiago Sgobe <thiagosg...@gmail.com> > >>>>> escreveu: > >>>>> > >>>>> > >>>>>> Luciana > >>>>>> > >>>>>> Use truncate table; ao inves do DELETE, desta forma a marca d'agua da > >>>>>> tabela sera reajustada e evitara o crescimento inconveniente. > >>>>>> > >>>>>> Att. > >>>>>> Thiago Sgobe > >>>>>> > >>>>>> Em 14 de março de 2012 15:53, Luciana Missao Osako Camargo < > >>>>>> lcama...@cpqd.com.br> escreveu: > >>>>>> > >>>>>>> ** > >>>>>>> > >>>>>>> > >>>>>>> Pessoal, > >>>>>>> > >>>>>>> Eu estou com Enterprise Edition Release 10.2.0.5.0 > >>>>>>> > >>>>>>> Tenho uma tabela que está com crescimento exagerado e, a princípio, > >>>> sem > >>>>>>> que possa ser justificada. > >>>>>>> > >>>>>>> A tabela está com PCTFREE 0 e PCTUSED 90 > >>>>>>> > >>>>>>> Só existe uma package que trabalha com esta tabela e faz: > >>>>>>> DELETE FROM tabela; > >>>>>>> INSERT INTO tabela SELECT * FROM tabela2; > >>>>>>> É exatamente dessa forma, sem hints, nada! > >>>>>>> > >>>>>>> Se é feito um MOVE nesta tabela, ela cai para 200Mb, mas ela cresce > >>>> até > >>>>>>> uns 4Gb. > >>>>>>> > >>>>>>> Tem algo que eu possa ser verificado para evitar este crescimento? > >>>>>>> > >>>>>>> Obrigada > >>>>>>> Luciana > >>>>>>> > >>>>>>> [As partes desta mensagem que não continham texto foram removidas] > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> [As partes desta mensagem que não continham texto foram removidas] > >>>>>> > >>>>>> > >>>>>> > >>>>>> ------------------------------------ > >>>>>> > >>>>>> > >>>>>> ---------------------------------------------------------- > >>>>>>> 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/ > >>>>>> > >>>>>> ---------------------------------------------------------- > >>>>>>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » > >>>>>> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO > >>>>> ESPAÇO! > >>>>>> VISITE: http://www.oraclebr.com.br/ > >>>>>> ---------------------------------------------------------- > >>>>>> Links do Yahoo! Grupos > >>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> [As partes desta mensagem que não continham texto foram removidas] > >>>>> > >>>>> > >>>>> > >>>> > >>>> > >>>> [As partes desta mensagem que não continham texto foram removidas] > >>>> > >>>> > >>>> > >>>> ------------------------------------ > >>>> > >>>> > >>>> ---------------------------------------------------------- > >>>>> 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/ > >>>> > >>>> ---------------------------------------------------------- > >>>>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » > >>>> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO > >>> ESPAÇO! > >>>> VISITE: http://www.oraclebr.com.br/ > >>>> ---------------------------------------------------------- > >>>> Links do Yahoo! Grupos > >>>> > >>>> > >>>> > >>> > >>> -- > >>> Bruno Sales > >>> > >>> [As partes desta mensagem que não continham texto foram removidas] > >>> > >>> > >>> > >> > >> > >> [As partes desta mensagem que não continham texto foram removidas] > >> > >> > >> > >> ------------------------------------ > >> > >> ---------------------------------------------------------- > >>> 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/ > >> ---------------------------------------------------------- > >>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure >>> » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >>> http://www.oraclebr.com.br/ > >> ---------------------------------------------------------- Links do Yahoo! >> Grupos > >> > >> > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > ---------------------------------------------------------- >> 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/ > ---------------------------------------------------------- >> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >> Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >> http://www.oraclebr.com.br/ > ---------------------------------------------------------- Links do Yahoo! > Grupos > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -------------------------------------------------------------------------------------------------------------------------- >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/ -------------------------------------------------------------------------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - 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: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html