Como transferir dados usando os comandos expdp e impdp?

29

Sou um noob da Oracle e minha intenção é transferir todos os dados e metadados de um esquema para outro em um banco de dados Oracle. Estou planejando usar datapump expdpe impdpcomandos. Eu tenho perguntas 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 expdpe impdpcomandos usando a conta SYS (como sysdba)? Esse é um método preferido?
  • Essa declaraçã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 impdpcomando?

jrara
fonte

Respostas:

31

impdp criará o usuário se ele ainda não estiver presente, para que você não precise se preocupar com isso, a menos que não seja isso que você deseja.

Não execute impdbou expdpcomo sysdba, apenas faça isso se o suporte da Oracle solicitar em circunstâncias específicas. Use um usuário comum para isso - aquele que recebeu a dbafunção, por exemplo. (Existem [IMPORT|EXPORT]_FULL_DATABASEprivilégios especificamente para esse tipo de coisa, você também precisará conceder acesso aos objetos de diretório do Oracle.)

Uma exportação de esquema completa (metadados e conteúdo) seria semelhante a:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

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:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Se você não deseja uma importação completa, pode definir alguns filtros nos dados e nos metadados. Consulte Filtrando durante operações de importação .

O Guia de utilitários tem todos os detalhes, eu recomendo a leitura de pelo menos a parte da visão geral.

Esteira
fonte
2

Para importar as tabelas truncadas, ou seja, você deseja apenas que os dados sejam importados de volta para a tabela:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Acima da minha mesa está a deptqual eu quero importar. Eu o truncei anteriormente. A partir do arquivo de despejo, o que é TEST.dmpe o logfileque é expdpTEST.log, quero que apenas os dados sejam importados (a estrutura da tabela será a mesma, então usamos o parâmetro TABLE_EXISTS_ACTION).

Se você tiver truncado 2 mesas, por exemplo, empe dept, e emptabela tem dept_idcomo a chave estrangeira, então você precisa importar a depttabela em primeiro lugar e, em seguida, a emptabela para erros evitar durante a importação.

mais informações http://satya-dba.blogspot.in/2009/05/datapump.html

user3649154
fonte