【问题标题】:Table importation fails with error code ORA-31693表导入失败,错误代码 ORA-31693
【发布时间】:2016-08-23 18:25:21
【问题描述】:

2 年来,我一直在接收从 Oracle 数据库到我的 Oracle 数据库的备份。我的公司正在运行版本 10.2.0.1.0,我们正在接收版本 12.1.0.2.0 的导出。他们正在使用 expdp,而我正在使用 impdp。我使用这个脚本在我的数据库中添加了一个新列

ALTER TABLE CONTAINERS 
ADD ("SHELL" NUMBER(14, 6) DEFAULT 0 );

现在在两个数据库上运行上述操作后,当他们向我发送导出时,相关表将不会导入。我收到以下错误。

ORA-31693: Table data object "PAS"."CONTAINERS" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-02373: Error parsing insert statement for table "PAS"."CONTAINERS".
ORA-00904: "SYS_NC00067$": invalid identifier

这个错误已经持续了大约两周,我尝试了多种方法来解决这个问题,这是我最后的手段。

非常感谢任何帮助。

【问题讨论】:

    标签: oracle oracle11g oracle10g impdp expdp


    【解决方案1】:

    您是否尝试追踪 SYS_NC00067?它看起来像系统分配的列名。当您添加基于函数的索引时,有时会发生这种情况。您是否在 Shell 上创建了基于函数的索引?

    【讨论】:

    • 问得好,我做到了,我的数据库中不存在该列,我正在与另一边的 DBA 检查他们是否有该列。我没有在 shell 上创建基于函数的索引。事实上,shell 不是任何东西的索引或键。我将把这个花絮添加到我的主要问题中。并在其他数据库中的列上与您联系。
    • 好的,你把我带到了那里。该表有一个使用新列的函数。当然,我在专栏旁边更新了这个功能。我从来没有想过这可能有助于解决我遇到的问题。我刚刚查看了函数的代码,实际上发现了一个非常小的错字。我已经通知了另一边的 DBA,并且正在收到另一个数据集发送给我,我们会看看它是否有任何作用。
    • 呃...这可能是个问题,因为我相信基于函数的虚拟列是在 Oracle 11 中引入的。所以“他们的”数据库支持它们,但你的不支持。祝你好运!
    猜你喜欢
    • 2017-07-20
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2013-06-24
    • 2011-08-01
    • 2017-09-13
    相关资源
    最近更新 更多