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