Pular para o conteúdo
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #101518
    Avatar de msantinomsantino
    Participante

      Pessoal, queria tirar uma dúvida com vocês!

      É frequente a solicitação de migração de schema PRODUÇÃO > HOMOLOGAÇÃO e o caminho que eu conheço é:
      1. Tiro um DUMP do schema de PRD
      2. DROPO o schema em HML
      3. Recrio o schema em HML
      4. Subo o DUMP em HML

      O lance é que isso é mto trabalhoso e, se eu não seguir os passos 2 e 3, na hora do IMPDP ele reclama que os objetos já existem e pula a criação. Só que podem ter objetos alterados que eu queira sobescrever (razão da operação).

      Não existe nenhuma forma de fazer um IMPDP mandando sobescrever o schema já existente, permitindo que ele DROPE e RECRIE cada objeto e seus dados?

      Vlw pessoal… abs

      #101519
      Avatar de felipegfelipeg
      Participante

        Olá,

        Acho que o mais próximo disso que você quer é a cláusula TABLE_EXISTS_ACTION do impdp.

        Da uma olhada nesse link:

        http://download.oracle.com/docs/cd/B193 … import.htm

        Outra explicação, caso você queira apenas a estrutura é a parte de “Refresh a Table Definition” deste link:

        http://www.rampant-books.com/art_nanda_datapump.htm

        Atenciosamente,
        Felipe.

        #101522
        Avatar de rmanrman
        Participante

          @msantino

          O item 3 não é necessário através do IMPDP. A própria importação cria o usuário.

          Outra opção é restaurar um backup full do RMAN. Desta forma você terá um clone, inclusive as estatísticas estarão idênticas.

          #101523
          Avatar de msantinomsantino
          Participante

            felipeg,

            valeu a dica. Interessante essa opção do TABLE_EXISTS_ACTION , mas isso é só a nível de tabelas ou abrange todos os objetos (views, procedures, triggers, etc)? Não ficou claro pra mim isso na documentação.

            rman,

            Sim, o item 3 não é necessário, mas se você considerar um ambiente de DEV/HML com estrutura diferente de tablespaces, por exemplo, na hora do IMPDP ele vai reclamar que o tablespace não existe no momento da criação. Então eu dropo o schema de DEV, recrio com o script de criação de DEV mesmo e então rodo o IMPDP.

            E o backup full não rola porque se tratam de schemas e não da base toda. Sacou?

            #101526
            Avatar de jspauloncijspaulonci
            Participante

              msantino, conforme o felipe disse, o mais perto é o TABLE_EXISTS_ACTION=Replace

              #101540
              Avatar de rmanrman
              Participante

                @msantino

                Bom, corta o item 3 do processo e utilize os parâmetros REMAP_SCHEMA, REMAP_DATAFILE, REMAP_TABLESPACE.

                Nunca precisei de utilizar o REMAP_DATAFILE, mas caso precise, é só dar uma pesquisada como que funciona e em que momento pode ser útil. Quem já utilizou por favor complemente com mais informações.

                Mas no REMAP_SCHEMA você pode renomear o SCHEMA no momento do IMPDP.

                Exemplo: Na base de produção o SCHEMA é o mytracelog, e na base de homologação você quer usar mytracelog_homologacao.

                O REMAP_TABLESPACE é o que você precisa.

                Exemplo: Na base de produção você as TABLESPACE mytracelog_data e mytracelog_index, e na base de homologação você quer usar em data e index.

                Consulte o help do IMPDP.

                Esses 3 parâmetros estão disponíveis no IMPDP, o antigo IMP não existe.

                Realmente neste contexto de SCHEMA o backup full do RMAN não é adequado.

                #101555
                Avatar de msantinomsantino
                Participante

                  Valeu rman, jspaulonci e felipeg pelas dicas.

                  Ontem eu testei o REMAP_TABLESPACE e funcionou na boa. Mas foi só um teste, fora desse meu cenário real.
                  De qualquer forma, já vou ficar de olho e na próxima utilizo esses recursos.

                  Qualquer problema eu grito de novo! hehehe

                  valeu galera…

                  #101558
                  Avatar de rmanrman
                  Participante

                    @msantino

                    Lembrei de outro detalhe, se a estrutura de diretórios da máquina de produção e homologação forem iguais, o próprio IMPDP cria a TABLESPACE, não tendo necessidade de utilizar o REMAP_TABLESPACE.

                    #101576
                    Avatar de msantinomsantino
                    Participante

                      Po, informação de ouro essa! hehehehe

                      O f… é que meu ambiente de testes aqui é muito limitado, mas já já testo isso também! rs…

                      O lance é que geralmente o objetivo não é criar o novo tablespace e sim utilizar o existente. Porém, os mesmos são diferentes em PROD/HML. Sacou?

                      mas é bom saber que, quando precisar ele vai criar…

                      Eu usava mto o IMP/EXP e era muito ruim, tinha que criar tudo na mão… mó saco! To vendo que com o IMPDP e o EXPDP o esquema é mais completo! rs…

                      #101577
                      Avatar de rmanrman
                      Participante

                        @msantino

                        Aqui se utilizar o EXP/IMP, mas estou montando um projeto para implantar o EXPDP/IMPDP, realmente o Data Pump é mais rápido, seguro e tem mais funcionalidades.

                        Utilizar o padrão OFA é importante, ainda mais quando existem vários ambientes como produção e homologação. Infelizmente aqui não esta 100% OFA, existe um padrão próprio.

                        #101829
                        Avatar de flopes6flopes6
                        Participante

                          msantino, teria como você colocar os comando que você utiliza nos passos 1, 2, 3, 4. Estou precisando fazer exatamente o que você faz, mas está dando alguns erros. Estou fazendo o dump da base de produção com o comando abaixo:
                          expdp.exe ‘sys/senha@banco as sysdba’ dumpfile=banco.dmp logfile=banco.log directory=backup full=yes

                          e estou tentando fazer o restore com o comando abaixo:
                          impdp ‘sys/senha@banco as sysdba’ remap_schema=user_prod:user_homolog table_exists_action=replace

                          Sendo que o user_homolog eu já criei.

                          Agradeço a ajuda.

                          #101832
                          Avatar de rmanrman
                          Participante

                            @flopes6

                            Tente assim:


                            impdp 'sys/senha@banco as sysdba' schemas=user_prod remap_schema=user_prod:user_homolog remap_tablespace=tablespace_dados_origem:tablespace_dados_destino, tablespace_indice_origem:tablespace_indice_destino table_exists_action=replace

                            Se as tablespace de origem e destino forem identicas não é necessário o parâmetro remap_tablespace.

                            #101916
                            Avatar de msantinomsantino
                            Participante

                              @flopes6,

                              Quais erros tão aparecendo?

                              O comando que o @rman passou não ajudou?

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