代码之家  ›  专栏  ›  技术社区  ›  Michael Pakhantsov

Oracle:导入数据泵转储而不了解转储文件内容

  •  2
  • Michael Pakhantsov  · 技术社区  · 14 年前

    导出/导入整个架构的旧方法:

     exp user/pwdp@server FILE=export.dmp OWNER=user ROWS=Y
     imp newuser/pwd@server FULL=Y FILE=export.dmp
    

     expdp user/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder 
    

    但是在导入时遇到问题:

     impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder
    

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-31655: no data or metadata objects selected for job
    ORA-39154: Objects from foreign schemas have been removed from import
    Master table "NEWUSER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
    Starting "NEWUSER"."SYS_IMPORT_FULL_01":  newuser/********@server
    DUMPFILE=export.dp DIRECTORY=exportfolder
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Job "NEWUSER"."SYS_IMPORT_FULL_01" successfully completed at 19:13:04
    

    添加架构选项将没有帮助(结果相同,oracle不允许导入非自有对象):

    impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder schemas=user
    

    我发现只有一种工作方法:

    impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder remap_schema=newuser:user
    

    所以问题是如何在不知道导出了哪个模式的情况下导入模式数据?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Michael Pakhantsov    13 年前

    首先,从技术上讲,您没有正确使用full=y:

    imp newuser/pwd@server FULL=Y FILE=export.dmp
    

    imp newuser/pwd@server touser=newuser fromuser=user FILE=export.dmp
    

    类似于impdp remap\u schema命令。

    但是,我知道您要做的是将一个模式从一个用户导入到另一个用户,而不必事先知道源用户。我不得不提到这一点,因为如果您不知道源用户,那么很容易假设您不知道数据文件的内容;如果您不知道数据文件的内容,那么通过发出full=y可以导入比您认为应该导入的更多的用户和数据。

    要点:full=y导入意味着导入每个用户及其相关内容;而不管您使用哪个用户登录数据库并开始导入。

    说到我的免责声明,impdp对于完全导入具有完全相同的功能—只需使用full=y

    impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder full=y
    

    更新

    this will works in newuser have privilege: IMP_FULL_DATABASE
    
    execution `grant IMP_FULL_DATABASE to newuser` solved it.
    

    参考文献: http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_import.htm#sthref301