Chiappa, segue resposta.

 

a)      Não é provável. A nota também fala para versões Enterprise Edition

b)      Essa opção também só  para Enterprise Edition

c)       Não testei. Vou ver uma janela para fazer os testes

d)      Tenho certeza que não tinha transações abertas. Pois depois de
fechar as aplicações, eu tirei a instância do ar e subi novamente,
verifiquei a área de UNDO e não tinha nada.

Table Size: 3.1GB

Index Size: 1.4GB

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: segunda-feira, 9 de setembro de 2013 13:53
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: alter index shrink space

 

  

Opa : eu tinha respondido mas ao que parece a internet comeu minha resposta
: então estou re-enviando, e desde já me desculpo com quem receber 2x ...

Bom, dando de barato que vc já verificou e **** REALMENTE PROVOU **** que
precisa da movimentação (por exemplo, cfrme
http://richardfoote.wordpress.com/2008/02/08/index-rebuild-vs-coalesce-vs-sh
rink-space-pigs-3-different-ones/ a sua aplicação deletou uma porção
Significatica de linhas, cujos valores ** não ** vão ser reusados, talvez
porque sequenciais/artificiais, E o acesso não é single-row, ou coisa do
tipo), NÂO estando portanto seguindo algum 'tutorial' na base do achômetro
e/ou da autoridade tipo eu-sou-o-expert (que é Muito Comum quando se fala de
'fragmentação', é o tipo do tópico que todo mundo Acha que sabe mas na
prática muitos só perpetuam mitos furados), aí temos que SIM, qualquer tipo
de movimentação de blocos VAI gerar algum UNDO e algum REDO, nem que seja
para as tabelas internas do RDBMS, que são SIM em sua maioria protegidas /
transacionadas do mesmo modo que as tabelas de usuário...
Aí eu digo :

a) vc deveria checar no Suporte Oracle por possibilidades como o Bug 3888229
: HUGE REDO AND UNDO GENERATED DURING A TABLE SHRINK OPERATION , e similares
: não é provável (até dada a antiguidade e a especifidade de plataforma),mas
é possível que vc esteja vendo um re-run ...... 

b) já que vc tem a opção de "fechar todos os aplicativos que acessam a
instância", para tentar diminuir o redo vc pode experimentar um INDEX
REBUILD NOLOGGING PARALLEL - via de regra isso não interfere grande coisa
(até porque a diminuição Efetiva é numa operação de APPEND, que só pode
ocorrer em tabelas - índices sempre tem que ser Ordenados fisicamente, não
dá pra apendar), mas vale a tentativa

c)vc TESTOU as Outras opções de movimentação/reordenação do índice, como
COALESCE, além do REBUILD em si, cfrme alguns artigos em
http://richardfoote.wordpress.com/category/index-shrink/ do índice ?? E as
opções de redefinição da tabela em si (como DBMS_REDEFINE, INSERT /*+ APPEND
*/, etc) , talvez até numa outra tabela-temporária vazia que depois de
dropar a tabela original vc a renomearia ???
Como eu não trabalho com Standard Edition, não faço idéia de quais opções
dessa lista estariam vedadas para vc, mas é algo a checar...

d) sobre o UNDO especificamente, vc TEM Certeza que não tinha aí nenhuma
outra Transação aberta usando o tal índice e/ou a tabela a qual o índice
pertence ??? OU AINDA, uma situação COMUNÍSSIMA , será que vc não teria **
OUTRAS TRANSAÇÕES quaisquer ** de modo geral consumindo o UNDO, OU mesmo
Transações que acabaram há pouco tempo e portanto ainda não puderam liberar
o espaço devido ao RETENTION ainda não cumprido, caso em que (OBVIAMENTE) vc
Não teria os 5 GB todos disponíveis para uso ??? QUAL é o tamanho da tabela
E do índice, em bytes, por falar nisso ?? 
DEPENDENDO dessas respostas, talvez a melhor opção seja vc simplesmente
temporariamente criar uma nova undo tablespace bem maior, a usar para a
movimentação e depois a dropar...

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Grupos" <marcio_cbj@...> escreveu
>
> Bom dia!
> 
> 
> 
> Oracle 10.2.0.5 Standard Edition one
> 
> 
> 
> Tentei fazer um shrink en um índice, e deu erro no UNDO. O meu UNDO está
> com tamanho de 5G, ele estava vazio no momento do shrink, pois antes de
> começar tirei a minha instância do ar, e fechei todos os aplicativos que
> acessam a instância.
> 
> 
> 
> Além de ocupar toda a minha área de UNDO, é gerado muitos archives. Tem
> alguma maneira de executar o shrink sem ocupar tanto o UNDO e gerar muitos
> archives?
> 
> 
> 
> Vi que tem a opção nologging no rebuild online, mas essa feature está
apenas
> para o EE. Para o Standard One, alguém conhece alguma maneira de fazer os
> shrink para corrigir a fragmentação nas minhas tabelas e índices que não
> gere muito UNDO?
> 
> 
> 
> Grato.
>



Responder a