- Este tópico contém 3 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por
VitorLeandro.
-
AutorPosts
-
22 de setembro de 2009 às 10:21 pm #89843
Hellubuntu
Participanteolá pessoal!
uma duvidazinha.
Quando devo rodar um rebuild Index? e esse processo pode ser rodado com o banco em produção? o que é recomendado?
abs
Fernando
22 de setembro de 2009 às 10:28 pm #89844vieri
ParticipanteSe sua versão for enterprise voce pode rodar o :
alter index rebuild online ;
Se sua versão for standart vc pode rodar o menos favorecido :
alter index rebuild;
A diferença principal é que o rebuild online não bloqueia as tabelas
podendo concorrer com os usuário, claro que com a monitoração de
um DBA.Já o rebuild simples dever se agendado uma janela.
😉
23 de setembro de 2009 às 12:18 am #89847David Siqueira
ParticipanteUm rebuild é sempre recomendado quando se tem um alto indice de fragmentação em seus objetos de banco do tipo INDEX, pois são eles os principais responsáveis por boas performances em consultas a tabelas ( quando as querys são bem escritas , diga-se d epassagem) caso seus indices sejam do tipo BITMAP a coisa requer um pouco mais de cautla, pois indices BITMAP’s não tem o mesmo comportamento de indices B-Tree os mais comuns utilizados.
Veja no site da Oracle ou até mesmo nos forúsn da via ha uma vasta quantidade de materiais bons sobre indices e sobre fragmentações também.
Abraço
23 de setembro de 2009 às 12:36 am #89848VitorLeandro
ParticipanteFala Fernando,
Tambem já pesquisei bastante sobre isso. Como Vieri você pode realizar o rebuild on line de um index se você tiver usando o Enterprise e tiver também espaço em disco.
Como a maioria dos clientes são Standart, o rebuild propriamente dito é muito custoso e muito raramente precisa ser executado numa base de produção, a não ser que na tabela onde o index está são realizados muitas operações de DML (delete principalmente).
Não existem um consenso entre os DBAs sobre quando é a hora de se realizer o rebuild de um determinado index, porem você pode verificar o B-Level ou Branch Level, que mostra o numero de vezes em que o Oracle referencia um index buscando determinado valor. Alguns dizem que se o Blevel estiver maior que 4, está na hora do rebuild, outros dizem que acima de 3.
Esta consulta gera automaticamente um DDL para se efetuar o rebuild de um determinado index com BLEVEL igual ou superior a 4
SELECT ‘ALTER INDEX ‘||TABLE_OWNER||’.’||INDEX_NAME||’ REBUILD TABLESPACE ‘|| TABLESPACE_NAME||’ ‘ SCRIPT
FROM DBA_INDEXES
WHERE BLEVEL >=4Antes de efetuar qualquer rebuild, colete estatística do sistema e do determinado index para se ter exatamente o valor do CLUSTERING_FACTOR.
Após o rebuild, efetue a coleta de estatística do index:
begin
DBMS_STATS.GATHER_INDEX_STATS (‘esquema’,’index_name’);
end;Outra alternativa seria o ALTER INDEX “índex_name” COALESCE que é bem menos custoso do que o rebuild em sí.
Veja o quado de vantagens e desvantagens na documentação:
http://download.oracle.com/docs/cd/B193 … sthref2504
Bem cara, desculpe pelo tamanho da explicação, mas é um assunto muito polemico, comprido e que estudando e estudando, parece que não saímos do lugar.
Pesquise a respeito, e se achar algo interessante, post para trocarmos uma idéia!
Abraço!
[/u] -
AutorPosts
- Você deve fazer login para responder a este tópico.