【问题标题】:Re-importing specific tables from Oracle dump file从 Oracle 转储文件重新导入特定表
【发布时间】:2014-02-09 10:39:56
【问题描述】:

我在 linux ssh 中使用以下命令将完整的 oracle 转储文件导入到我的数据库架构中。

    impdp system/password directory=bckup schemas=sch101 dumpfile=sc101.dmp    remap_schema=sch101:MY_SCHEMA TABLE_EXISTS_ACTION=APPEND;

这个命令必须将表导入到我的目标架构中,但由于某些约束错误,一些表被跳过。 我想在一一解决问题后尝试将这些表导入我的数据库。我使用以下命令这样做,

    impdp system/password DIRECTORY=bckup TABLES=TBL_NAME DUMPFILE=sch101.dmp remap_schema=sch101:MY_SCHEMA TABLE_EXISTS_ACTION=APPEND;

但是这个命令返回错误:

    ORA-39002: invalid operation
    ORA-39166: Object SYSTEM.TBL_NAME was not found.

我在我使用的转储文件的导出日志文件中检查了我尝试导入的表的名称,它们存在于转储文件中。 我在这里犯了什么愚蠢的错误?

【问题讨论】:

    标签: database oracle import


    【解决方案1】:

    因为您是从可能是完整(非架构)导出的system 导入,所以尽管存在schema 参数,您仍需要在tables parameter 中指定架构名称:

    ... TABLES=sch101.TBL_NAME ...
    

    您收到的错误消息指的是SYSTEM.TBL_NAME,这显然(或希望,无论如何)不是您想要的。

    【讨论】:

    • '尽管存在模式参数'。我试过了,但它不起作用,因为在 impdp 中,您可以指定模式或表参数,而不是同时指定两者。这就是为什么我们需要使用模式来限定表。
    • 我可能指的是 remap_schema 参数,但那是很久以前的事了......你是对的,你不能同时指定 tables 和 'schema` - 这就是为什么你需要将架构作为表名的前缀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多