【问题标题】:Oracle impdp remap one schema to many failed with "invalid value for parameter, 'remap_schema"Oracle impdp 将一个模式重新映射到多个模式失败,“参数值无效,'remap_schema”
【发布时间】:2021-05-06 03:49:56
【问题描述】:

我在 Oracle 12c 中为源数据库中的模式 A 创建了一个转储文件 dumpfile.dmp,然后我尝试使用一个命令将转储文件导入另一个数据库 TESTDB 上的多个模式 B、C、D schema_remap 选项。该命令如下所示: impdp system/password@TESTDB directory=mydirectory dumpfile=dumpfile.dmp remap_schema=A:B,C,D remap_tablespace=TBS_A:TBS_B,TBS_A:TBS_C,TBS_A:TBS_D logfile=mylogfile.log。 我什至将命令放在 .par 文件中,但仍然出现同样的错误。

它总是返回错误“UDI-00014:参数值无效,'remap_schema'” 如果有人能告诉我我做错了什么,我将不胜感激?

【问题讨论】:

    标签: database oracle


    【解决方案1】:

    尝试将转储文件导入到多个模式中,例如 B、C、D

    remap_schema=A:B,C,D

    你不能那样做; DataPump 不支持这种重映射。 remap_schema 必须是 1:1 关系,remap_tablespace 也必须如此,并且源必须是唯一的(即每次导入只能重新映射模式 A 一次)。根据documentation

    可以指定多个 REMAP_SCHEMA 行,但源架构 每个人都必须不同。

    您必须为每个目标架构运行单独的导入。

    impdp system/password@TESTDB directory=mydirectory dumpfile=dumpfile.dmp remap_schema=A:B remap_tablespace=TBS_A:TBS_B logfile=mylogfile.log
    impdp system/password@TESTDB directory=mydirectory dumpfile=dumpfile.dmp remap_schema=A:C remap_tablespace=TBS_A:TBS_C logfile=mylogfile.log
    impdp system/password@TESTDB directory=mydirectory dumpfile=dumpfile.dmp remap_schema=A:D remap_tablespace=TBS_A:TBS_D logfile=mylogfile.log
    

    【讨论】:

    • 感谢 pmdba!我必须使用 Oracle 中可用的东西....
    • 我刚刚描述了您是如何使用 Oracle 实现的。 Datapump 是 Oracle 导入/导出实用程序 (impdp/expdp)。
    【解决方案2】:

    您需要仔细查看 REMAP_SCHEMA(和 REMAP_TABLESPACE)的语法。

    没有规定将一个导出的架构(或表空间)重新映射到多个目标架构(或表空间)。

    https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/datapump-import-utility.html#GUID-5DA84A72-B71C-4491-9DD8-7075D9A4B04F

    如果您的后续问题是“我该如何实现这个目的?”答案是为每个目标架构运行单独的导入。

    【讨论】:

    • 谢谢 EdStevens,我也这么想,我只是在寻找捷径。
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2013-11-21
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多