Pular para o conteúdo
  • Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por diegolenhardt.
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #92338
    Doug
    Participante

      Pessoal, uma duvida cruel.

      Eu tenho um datapump de 84MB. Criei um usuario e importei em uma tablespace de 500MB.
      No total a tablespace ficou com 293,8M utilizados.

      Acessando com esse novo usuário, deleto as informações de algumas tabelas, na verdade, muitas informações.

      Gero o datapump e o mesmo fica com 80MB. Crio um novo usuario,uma nova tablespace e importo o dump, e a bendita tablespace utiliza 340MB.

      Nao deveria utilizar menos espaço?

      #92339
      Marcos Braga
      Participante

        Olá Doug,

        Minha sugestão é que consulte a view DBA_SEGMENTS para levantar o que e onde está todo esse espaço consumido.

        Agora um detalhe importante, na exportação através do datapump (expdp) é possível observar o tamanho físico e quantidade de registros de cada tabela exportada, é bom para efetuar um prévio levantamento de consumo.

        Levando em consideração que está criando outro usuário (schema) para importar os dados utilizando datapump, deve estar utilizando REMAP_SCHEMA; portanto é importante observar se está criando uma tablespace diferente também para efetuar a carga (utilizar REMAP_TABLESPACE).

        Bom…., são só hipóteses. Verifique primeiramente a DBA_SEGMENTS para ver o real consumo e onde estão alocados os objetos.

        []s
        Braga

        #92340
        Doug
        Participante

          Então Braga, realmente estou usando o remap.

          Ao meu entender mesmo que eu delete dados, a tablespace continua gigante, sendo assim eu teria que fazer um reorg na mesma, estou errado?

          #92341
          Marcos Braga
          Participante

            [quote=”Doug”:3ge87caz]Então Braga, realmente estou usando o remap.

            Ao meu entender mesmo que eu delete dados, a tablespace continua gigante, sendo assim eu teria que fazer um reorg na mesma, estou errado?[/quote]

            Quando você importa, você utiliza o REMAP_TABLESPACE?

            Se não, utilize. Crie uma tablespace somente para o novo schema e utilize o REMAP_TABLESPACE. Se não utilizar o REMAP_TABLESPACE os dados irão para a tablespace utilizada pelo usuário da exportação (schema antigo).

            Creio que esse procedimento vai tirar qualquer dúvida quando a utilização do espaço.

            []s
            Braga

            #92343
            Doug
            Participante

              Utilizo sim.

              Um amigo dba me disse que apos deletar os dados, eu devo fazer rebuild nos indices e move nas tabelas. Depois gero o DUMP e importo no novo banco.

              #92344
              Marcos Braga
              Participante

                [quote=”Doug”:3edpwkyk]Utilizo sim.

                Um amigo dba me disse que apos deletar os dados, eu devo fazer rebuild nos indices e move nas tabelas. Depois gero o DUMP e importo no novo banco.[/quote]

                Utilizando o export esse procedimento é desnecessário.

                Com export e import os dados são criados sequencialmente, não há fragmentação nesse processo.

                A fragmentação ocorre após muito uso do banco onde há um crescimento e depois apaga-se dados da tabela, isso faz com que a marca d’água da tablespace não volte, sendo necessário o procedimento informado (alguém me corrija se errei em algo aqui, não lembro direito).

                Creio que é isso.

                []s
                Braga

                #92345
                Doug
                Participante

                  Então posso fazer o seguinte:

                  Pegar a base clonada de 400GB, deletar as informações.
                  Após o trabalho de delete executo o EXP e nao EXPDP, correto ?

                  #92346
                  Marcos Braga
                  Participante

                    Desculpe se fiz confusão, tanto faz o exp ou o expdp.

                    Pode utilizar tanto o exp quanto o expdp, o processo de extração dos dados é basicamente o mesmo. A importação também é sequencial para ambos os casos (não há fragmentação).

                    Agora, meu conselho é criar tablespace distinta para verificar o tamanho, e depois utilizar a view DBA_SEGMENTS.

                    []s
                    Braga

                    #92347
                    burga
                    Participante

                      Na verdade o export e o import só vão criar os dados sequencialmente se você fizer apenas a importação dos dados.

                      Você deve criar o esquema e os objetos com os parâmetros de storage definidos adequadamente e aí sim importar os dados com o comando IMP e o parâmetro IGNORE=Y.

                      Se você importar tudo de uma vez no import (metadados+dados) você não vai liberar o espaço não utilizado…

                      #92354
                      Anônimo

                        Olá DOUG
                        Não sei já conseguiu resolver esse problema mas já aconteceu algo semelhante comigo e consegui resolver usando rebuild em index e move nas tables.
                        Eu tinha um schema com várias tabelas já definido seu storage initial 500mb e mesmo que no exp colocasse o parâmetro rows=n sempre me criava todas as tabelas com seu initial a 500mb e somente depois de o imp realizado eu reorganizava os index e as tables assim já definia todas as tabelas com 100kb desta forma conseguia diminuir.
                        Vou postar o meu procedimento de como consegui resolver esse problema.

                        Obs: Só usar o parâmetro IGNORE=y se seu schema já tiver as tabelas identicas as que vai importar.
                        exp schema/schema@db file=file_name.dump log=exp_file_name.log full=y

                        imp schema/schema@db file=file_name.dump log=imp_file_name.log tablespaces=n trasport_tablespace=n ignore=y

                        Após importação use o select abaixo para diminuir e organizar as tabelas e index.

                        — Este select vai te retornar a informação do tamanho de todas as suas Tabelas e Index referente ao schema definido, eguarde o valor todal que aparece na coluna MB para comparar no fuinal.
                        SELECT t1.owner, SUM (t1.BYTES / 1024 / 1024) MB
                        FROM dba_segments t1
                        WHERE t1.BYTES / 1024 / 1024 > 5
                        AND t1.segment_type IN (‘TABLE’, ‘INDEX’)
                        AND owner = ‘SCHEMA’ — Definir aqui o schema
                        GROUP BY t1.owner
                        ORDER BY 2 DESC

                        — Este select vai gerar os comando DDL para Tabelas
                        SELECT ‘ALTER TABLE ‘
                        ||owner||’.’||segment_name
                        ||’ move STORAGE (INITIAL 100K);’
                        FROM dba_segments
                        WHERE owner=’SCHEMA’ — Qui coloque o nome do seu schema
                        AND segment_name NOT LIKE ‘%0%’
                        AND segment_type=’TABLE’;

                        — Este select vai gerar os comando DDL para Index
                        SELECT ‘ALTER INDEX ‘
                        ||owner||’.’|| segment_name
                        ||’ rebuild STORAGE (INITIAL 100K);’
                        FROM dba_segments
                        WHERE owner = ‘SCHEMA’ — Qui coloque o nome do seu schema
                        AND segment_name NOT LIKE ‘%0%’
                        AND segment_type = ‘INDEX’

                        Agora é só executar os scrips gerados por esses selects e assim poderá fazer novamente o exp com os tamanhos redefinidos.

                        Execute novamente o select para ter ver o quanto de espaço foi diminuido

                        Foi assim que consegui resolver o problema de espaço em schemas.

                        #92363
                        Doug
                        Participante

                          Midianet, muito obrigado. Vou testar aqui e assim q puder posto o resultado. Muito obrigado tbm ao restante do pessoal.

                          #92375
                          diegolenhardt
                          Participante

                            Usando o exp veja o parametro compress,

                            pois deve estar sendo criada a tabela novamente no banco com o initial definido como o tamanho anterior dela, deve criar com initial 32k, 10M , etc

                            e não os 400GB,

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