如何使用 expdp 和 impdp 命令传输数据?

jra*_*ara 29 schema oracle export impdp expdp

我是 Oracle 菜鸟,我的目的是将所有数据和元数据从一个架构传输到 Oracle 数据库中的另一个架构。我打算使用数据泵expdpimpdp命令。我对此有疑问:

  • 我可以在没有用户的情况下创建目标模式还是应该先创建一个用户(也可以创建模式)?
  • 我可以使用 SYS(作为 sysdba)帐户执行expdpimpdp命令吗?这是首选方法吗?
  • 该语句是否从模式中获取所有对象(数据和元数据)并将它们移动到不同的模式中?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  
    
    Run Code Online (Sandbox Code Playgroud)

    那么目标模式是impdp命令后源模式的精确副本吗?

Mat*_*Mat 31

impdp 如果用户不存在,将创建用户,因此您不必担心它,除非这不是您想要的。

不要运行impdbexpdpas sysdba,只有在 Oracle 支持人员在特定情况下要求时才这样做。使用普通用户 -dba例如,已被授予角色的用户。(有[IMPORT|EXPORT]_FULL_DATABASE专门针对此类事物的权限,您也需要授予对 Oracle 目录对象的访问权限。)

完整的模式导出(元数据和内容)确实看起来像:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log
Run Code Online (Sandbox Code Playgroud)

如果要导入到不同的用户/模式(目标数据库可以与源数据库相同),可以使用:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log
Run Code Online (Sandbox Code Playgroud)

如果您不想要完整的导入,您可以对数据和元数据设置一些过滤器。请参阅导入操作期间的过滤

实用程序指南有所有的细节,我强烈建议至少阅读概述部分。