- Este tópico contém 12 respostas, 5 vozes e foi atualizado pela última vez 12 anos, 10 meses atrás por msantino.
-
AutorPosts
-
8 de novembro de 2011 às 5:55 pm #101518msantinoParticipante
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 HMLO 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
8 de novembro de 2011 às 7:54 pm #101519felipegParticipanteOlá,
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.9 de novembro de 2011 às 12:41 am #101522rmanParticipante@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.
9 de novembro de 2011 às 4:37 am #101523msantinoParticipantefelipeg,
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?
9 de novembro de 2011 às 7:19 pm #101526jspaulonciParticipantemsantino, conforme o felipe disse, o mais perto é o TABLE_EXISTS_ACTION=Replace
10 de novembro de 2011 às 2:03 am #101540rmanParticipante@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.
10 de novembro de 2011 às 3:52 pm #101555msantinoParticipanteValeu 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…
10 de novembro de 2011 às 4:37 pm #101558rmanParticipante@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.
10 de novembro de 2011 às 8:58 pm #101576msantinoParticipantePo, 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…
10 de novembro de 2011 às 9:04 pm #101577rmanParticipante@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.
25 de novembro de 2011 às 5:30 pm #101829flopes6Participantemsantino, 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=yese estou tentando fazer o restore com o comando abaixo:
impdp ‘sys/senha@banco as sysdba’ remap_schema=user_prod:user_homolog table_exists_action=replaceSendo que o user_homolog eu já criei.
Agradeço a ajuda.
25 de novembro de 2011 às 6:34 pm #101832rmanParticipante@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.
29 de novembro de 2011 às 4:42 pm #101916msantinoParticipante@flopes6,
Quais erros tão aparecendo?
O comando que o @rman passou não ajudou?
-
AutorPosts
- Você deve fazer login para responder a este tópico.