Sou um noob Oracle e minha intenção é transferir todos os dados e metadados de um esquema para outro dentro de um banco de dados Oracle. Estou planejando usar datapumps expdp
e impdp
comandos. Tenho dúvidas sobre isso:
- Posso criar um esquema de destino sem um usuário ou devo criar um usuário primeiro (o que também cria um esquema)?
- Posso executar
expdp
eimpdp
comandos usando a conta SYS (as sysdba)? Esse é um método preferido? Essa instrução pega todos os objetos (dados e metadados) de um esquema e os move para um esquema diferente?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
Então, o esquema de destino é uma cópia exata do esquema de origem após o
impdp
comando?
impdp
criará o usuário se ele ainda não estiver presente, então você não precisa se preocupar com isso, a menos que não seja o que você deseja.Não execute
impdb
ouexpdp
comosysdba
, apenas faça isso se o suporte da Oracle solicitar em circunstâncias específicas. Use um usuário comum para isso - um que tenha recebido adba
função, por exemplo. (Existem[IMPORT|EXPORT]_FULL_DATABASE
privilégios específicos para esse tipo de coisa, você também precisará conceder acesso ao(s) objeto(s) do diretório Oracle.)Uma exportação de esquema completo (metadados e conteúdo) realmente se pareceria com:
Se você deseja importar para um usuário/esquema diferente (o banco de dados de destino pode ser o mesmo que a origem), você pode usar:
Se você não deseja uma importação completa, pode definir alguns filtros tanto nos dados quanto nos metadados. Consulte Filtrando durante as operações de importação .
O Guia de Utilitários tem todos os detalhes, recomendo fortemente a leitura pelo menos da parte de visão geral.
Para importar as tabelas truncadas, ou seja, você quer apenas que os dados sejam importados de volta para a tabela:
Acima da minha tabela está
dept
a que quero importar. Eu trunquei antes. Do dumpfile que éTEST.dmp
, elogfile
qual éexpdpTEST.log
eu quero que apenas os dados sejam importados (a estrutura da tabela será a mesma então usamos o parâmetroTABLE_EXISTS_ACTION
).Se você truncou 2 tabelas, por exemplo
emp
edept
, e aemp
tabela temdept_id
como chave estrangeira, você precisa importardept
primeiro a tabela e depois aemp
tabela para evitar erros durante a importação.mais informações http://satya-dba.blogspot.in/2009/05/datapump.html