- Este tópico contém 17 respostas, 6 vozes e foi atualizado pela última vez 14 anos, 3 meses atrás por
Rodrigo Almeida.
- Você deve fazer login para responder a este tópico.
› Fóruns › Banco de dados Oracle › Comando insert sem gerar archives
Senhores.. boa noite..!
Só uma colocação..
O Hint APPEND não vai fazer gerar redo ou não, o hint APPEND em um insert, vai simplesmente inserir os dados após o final da marca d´agua, ou seja, se vc tem uma tabela com 10milhões de linhas e faz inserts e deletes constantemente, pode acontecer de ficarem “buracos” nos segmentos desta tabela, com blocos não usados, pois ela não foi “reorganizada”, utilizando o hint APPEND vc fala para o Oracle descartar estes buracos, ele não vai precisar ficar procurando por blocos vazios dentro da tabela para inserir os dados, ele simplesmente vai no ultimo bloco utilizado da tabela e começa a inserir a partir daquele ponto..
Um exemplo seria mais ou menos assim...
Vc possui uma tabela os blocos preenchidos com dados..
1-2-3-4-5-6-7-8-9-10-
Deleta os valores nos blocos pares.. terá:
1- -3- -5- -7- -9- -
Inserindo novos valores sem o hint APPEND:
1-2-3-4-5-6-7-8-9-10-
Inserindo novos valores com o hint APPEND:
1- -3- -5- -7- -9- -11-12-13-14-15-16
Tanto que muitas vezes precisamos fazer um Shrink na tabela para reorganiza-la…
Para tentar não gerar muitas entrada nos redos, vc pode colocar a tabela em modo NOLOGGING, mas como o Rodrigo falou, mesmo assim vai gerar entradas nos redos..
Bom.. me corrijam se eu estiver errado.. mas por tudo q estudei e me lembro.. é assim que funciona o hint APPEND.. Tanto que inserts por DML usam por default APPEND..
Abraços.!
Régis, você está certo, o hint APPEND por si só é isso, o negócio do REDO é quando se usa ele em conjunto com o NOLOGGING na tabela.
E sim, vai gerar REDO, mas porque gera um pouco de UNDO, pros índices e o que mais alterar no dicionário de dados. Mas não gera pros dados que estão sendo inseridos no momento… Pelo menos é assim que eu entendo! Mas se eu estiver errado, é mais uma coisa que aprendo… 😀
Alguém pode confirmar ou me corrigir?
Eu concordo com o Burga e Thunder.
REDO é gerado em qq DML e APPEND é apenas para não procurar por blocos vazios, por isso o nome APPEND… hehehehehehhe
Abraços,
› Fóruns › Banco de dados Oracle › Comando insert sem gerar archives