Pular para o conteúdo
  • Este tópico contém 9 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 1 mês atrás por crisborges.
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #85253
    Anônimo

      Pessoal,

      Estou tentando particionar uma tabela e estou fazendo o seguinte comando, mas está me gerando erro, o comando está certo?….o que está faltando?

      alter table SPED.TBEA_LANCTO_CONTABIL
      ADD PARTITION VALUES LESS THAN (MAXVALUE)

      #85262
      adanelon
      Participante

        Aproveitando o assunto, na empresa onde trabalho temos algumas tabelas de históricos com milhões de registros, e está sendo solicitado um plano de ação para melhor o desempenho das mesmas. Foi levantada a hipótese de particionar algumas delas, porém, um dos DBA’s justificou que o ganho da tabela com o particionamento é irrisório. Alguém poderia comentar sobre o ganho nesta atividade?

        #85263
        Ricardo Portilho Proni
        Participante

          Se a tabela não foi criada como particionada, você não pode adicionar uma partição.
          Mas existem algums métodos para fazer isso.
          Um é usar o DBMS_REDEFINITION.

          Veja aqui.
          http://www.oracle-base.com/articles/mis … gTable.php

          #85264
          crisborges
          Participante

            Fala Cleber,

            como particionamento é um assunto bastante extenso, fiz um exemplo que talvez seja mais objetivo e útil.

            passo 1 :
            create table tmp2 (codigo number(4),
            descricao varchar2(1000))
            partition by range (codigo)
            (partition p1 values less than (250) ,
            partition p2 values less than (500) ,
            partition p3 values less than (1000));

            passo2:

            ALTER TABLE tmp2
            ADD PARTITION p4
            VALUES LESS THAN(maxvalue);

            abs,
            Cris Borges.

            #85265
            crisborges
            Participante

              Fala Adanelon,

              esse assunto é 10!! Seguinte, em todas as minhas experiências com particionamento , sempre tivemos ganhos BASTANTE significativos, vamos ver alguns detalhes interessantes :

              1 – Garantir um bom método de particionamento, por exemplo:
              se estamos falando de tabelas de 100 milhões de registros, fazer ‘N’ partições de até 5 milhões (ou até menos registros), o ideal nesse ponto também é balancear a carga entre tablespace / datafiles / filesystems.

              2 – Criar indíces pertinentes às suas consultas, isso é muito importante para boa performance.

              3 – Como estamos falando de performance, não podemos esquecer dam coleta de estatística em dia!!

              Porque os ganhos são significativos, imagina procurar 1 linha em 100 milhões de registros, se a busca puder ser direcionada para uma partição específica (no nosso exemplo uma partição de 5 milhões de registros) ficará muito mais rápido. Em muitos casos a melhora passa de 200%.

              Abs,

              #85274
              Anônimo

                valeu galera….ajudou bastante.

                #85275
                Rodrigo Almeida
                Participante

                  Reforço as palavras do Cris.

                  Existem diversos pontos de ganhos de performance com tabelas particionadas, ** QUANDO SE HÁ UM GRANDE VOLUME DE DADOS **, os ganhos são muitos, isso é indiscutível.

                  E como dito os amigos, não basta apenas particionar a tabela e esperar vim o ganho de performance, tem que saber estruturar, saber utilizar o melhor algoritmo de particionamento para a sua regra de negócio. Se vai utilizar LIST, HASH ou RANGE PARTITION, se vai utilizar particionamento composto, quais serão as chaves de particionamento da tabela, a distribuição física no servidor, quais os melhores índices para a tabela, LOCAL ou DOMAIN Partition… e por aí vai…

                  Na internet tem bastante literatura sobre o assunto, e caso tenha dúvidas, poste aqui para nós!!!

                  Abraços,
                  Rodrigo Almeida

                  #85276
                  adanelon
                  Participante

                    Valeu pela ajuda, vou ler sobre os métodos de particionamento, e depois argumentar com o DBA. Obrigado.

                    #85292
                    adanelon
                    Participante

                      Mais uma dúvida a caminho: é necessária uma licença da Oracle para utilizar o particionamento?

                      #85298
                      crisborges
                      Participante

                        Na verdade Adanelon, a função de particionamento de segmentos só funciona com versões enterprise do database.
                        Essa versão tem preços diferenciados das demais (é mais cara $$$$ sem dúvida) .

                        Abs,

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