Pular para o conteúdo
  • Este tópico contém 3 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por VitorLeandro.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #89843
    Hellubuntu
    Participante

      olá 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

      #89844
      vieri
      Participante

        Se 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.

        😉

        #89847
        David Siqueira
        Participante

          Um 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

          #89848
          VitorLeandro
          Participante

            Fala 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 >=4

            Antes 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]

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.