Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #98235
    mpvargas
    Participante

      Caros Amigos,
      Preciso atualizar todos os dias uma base de desenvolvimento, gostaria de atualizar somente os dados para ganhar tempo…
      A forma mais prática que encontrei foi através do Expdp/Impdp
      Blz… até aí tudo bem
      Criei um script para rodar de madrugada, pego o backup e faço o IMPDP com a opção TABLE_EXISTS_ACTION = TRUNCATE
      Só que me deparei com o seguinte problema… Como quero atualizar somente os dados, existem algumas tabelas que dão erro porque o IMPDP não atualiza campos do tipo BLOB ou LONG RAW…
      Tentei com o EXPORT/IMPORT e não encontrei a opção de atualizar uma tabela existente…
      Existe esta opção no IMPORT? Ou temos que dropar a tabela antes…
      Obrigado pela ajuda

      #98242
      burga
      Participante

        A saída é:

        1. Apagar os dados da tabela a ser atualizada;
        2. Utilizar a cláusula TABLE no comando imp especificando a tabela que quer importar e a cláusula IGNORE=Y para ignorar os erros de tabela já existente.

        Ou, como você mesmo disse, você pode dropar a tabela antes.

        Lembrando que em ambos os casos deve se ter certeza de que esta “atualização” não causará inconsistências nos dados das tabelas (relacionamentos, etc), mas sei que você já sabe disso… 😆

        #98252
        mpvargas
        Participante

          Ricardo …. valeu pela dica

          A questão é que são mais de 4.000 tabelas, sendo que já pesquisei e vi que aproximadamente 50 tem o campo LONG RAW…

          A cláusula IGNORE ignora os erros da tabela existente e atualiza?

          #98253
          burga
          Participante

            Agora entendi seu problema! Eu pensei que era apenas uma tabela a ser importada, nesse caso, como não é, acredito que você não precisa usar a cláusula TABLE…

            A cláusula IGNORE ignora os erros da tabela existente e atualiza?

            Exato, basicamente o IGNORE=Y vai ignorar todas as mensagens de erro do import e continuar o processo de importação. Ex.: erro ao criar objetos já existentes, erro ao inserir dados já existentes etc…

            Esse processo não atualiza os dados já existentes, por isso existe a necessidade de realizar o delete dos dados antes. Também pode ser necessário desabilitar todas as FK’s antes do import. Outro detalhe, como você está trabalhando com LONGs, lembre de utilizar a cláusula BUFFER com um valor mais alto para o EXP.

            Abraços!!

            #98254
            mpvargas
            Participante

              Valeu Ricardo…

              Como eu quero atualizar somente os dados e preciso ganhar tempo, estava pensando numa forma de só apagar as tabelas que tenham campos LONG…
              Com isso eu faria um expdp, nesse caso ele atualizaria todas as tabelas que não existem e daria erro nas outras e a seguir eu montaria um outro script usando o impdp com a opção table_exists_action=truncate e nesse caso ele atualizaria tudo e daria erro nas tabelas com campo LONG.
              O que vc achou dá idéia?

              #98255
              Sousa04
              Participante

                PQ VC NÃO USA TABLE_EXISTS_ACTION = REPLACE
                acho q vai dar menos dor de cabeça.

                #98256
                mpvargas
                Participante

                  Blz Sousa
                  valeu pela dica…

                  O problema é que como eu queria atualizar somente os dados, eu estava usando o paramentro content=data_only… mas com sua dica eu coloquei TABLE_EXISTS_ACTION=REPLACE exclude=index e deu certo…

                  Obrigado…

                  PS.: Burga obrigado tb pela ajuda

                  #98259
                  mpvargas
                  Participante

                    Amigos…
                    Uma última dúvida pra finalizar.

                    O que faz o REPLACE?
                    Dá um DROP na tabela e depois CREATE TABLE?

                    #98260
                    burga
                    Participante

                      [quote=”mpvargas”:3vyo3x8v]Amigos…
                      Uma última dúvida pra finalizar.

                      O que faz o REPLACE?
                      Dá um DROP na tabela e depois CREATE TABLE?[/quote]

                      Isso mesmo, ele dropa a tabela, cria ela novamente e carrega os dados do dump na nova tabela.

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