【问题标题】:Oracle: how to disable table compression on dmp file importOracle:如何在 dmp 文件导入时禁用表压缩
【发布时间】:2010-12-17 23:06:13
【问题描述】:

我有由 EXP 实用程序创建的 dmp 文件。源数据库启用了表压缩。如何在导入 dmp 文件时禁用压缩。目标数据库未启用此未来。

我在 IMP 实用程序上找不到任何用于此目的的开关。

imp u/p@sid file=test.dmp LOG=test.log  IGNORE=Y TABLES=(A_TABLE) FROMUSER=USR1 TOUSER=USR2

这是我得到的错误:

ORA-00439: feature not enabled: Table compression

两个数据库都是 Oracle v 11g。

【问题讨论】:

    标签: oracle import


    【解决方案1】:

    我认为您必须通过使用 dbms_metadata 从源数据库中提取定义来预先创建表。

    您还可以使用 imp indexfile 选项创建一个可编辑的脚本,其中 COMPRESS 可以全局替换为 NOCOMPRESS。

    Datapump 可能有一个选项来执行此操作...在 11g 中我将使用 datapump 而不是 imp/exp。

    【讨论】:

    • 感谢您的回复。我有重新创建表的脚本。我唯一的问题是从 dmp 文件加载数据。通常我使用数据泵。但是这次一张桌子给了我很多问题(ORA-39014,ORA-04030),我决定尝试旧的导入/导出实用程序。
    • 如果您预先创建表,那么 IGNORE=Y 的 IMP 将只从导出文件中导入数据
    • @Gary。这就是我正在做的事情,我得到“ORA-00439:未启用功能:表压缩”。
    • 所以你的表是预先创建的,使用 NOCOMPRESS 和 IGNORE=Y,但你仍然得到那个错误?作为尝试创建表的一部分,是否可以判断错误是否发生?我想知道创建表的尝试是否会引发此错误,但 IGNORE=Y 仅设置为忽略“表已存在”错误,而不是忽略“未启用功能”错误。一种选择是打开 exp 文件并将COMPRESS 替换为NOCOMPRESS(尝试将给定长度的字符串修改为相同长度,以避免重写所有后续数据)
    • @大卫。你是对的。预先创建表并使用 IGNORE=Y 应该可以工作。它在我的情况下不起作用,因为我尝试导入的表包含自定义类型。我错过了警告:“IMP-00063:警告:跳过表“USR12”。“A_TABLE”,因为对象类型“USR2”。“CUST_TYPE1”无法创建或具有不同的标识符”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2022-10-24
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多