【问题标题】:How can I import function based indexes using impdp?如何使用 impdp 导入基于函数的索引?
【发布时间】:2014-09-23 14:48:49
【问题描述】:

我有许多表使用基于函数的索引(如果您愿意,可以使用索引)。这些索引使用我定义的包中的函数。在导入用户的模式时,似乎首先导入了表,然后是索引,然后是包。

我说瘦是因为我得到了以下错误;

ORA-39083: Object type INDEX failed to create with error:
ORA-04067: not executed, package body "DEVELOPE.METAPHONE" does not exist
ORA-06508: PL/SQL: could not find program unit being called: "DEVELOPE.METAPHONE"
Failing sql is:
CREATE INDEX "DEVELOPE"."CLAIMS_PATIENT_INDEX_2" ON "DEVELOPE"."CLAIMS_PATIENT" (
"GENDER", "DEVELOPE"."METAPHONE"."GENPRIMKEY"("NAME_FIRSTNAME",3), 
TO_NUMBER(TO_CHAR("DOB",'YYYY')), SUBSTR("ADDR_ZIP",1,3)) PCTFREE 10 INITRANS 2 
MAXTRANS 166  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTEN

impdp 中是否有可以解决此问题的参数?还是其他解决方法?

如果我在 impdp 完成后创建索引,一切正常。

【问题讨论】:

  • 这是“使用 REMAP_SCHEMA 导入的错误 17943479 ORA-39083/ORA-904,用于基于 PLSQL 函数的虚拟列或函数索引”。解决方法是“无”。该错误声称已在 12.2 中修复,但我在该版本中遇到了同样的问题。 5 年后遇到同样的问题很烦人,仍然没有简单的解决方法。

标签: oracle oracle11g impdp


【解决方案1】:

使用选项:content=data_only 或者您可以使用 DATAPUMP API 编写自己的导入器

您可以多次尝试导入您的架构:

  1. 表格和表格的数据

  2. 函数

  3. 索引

我相信它必须可以实施。

【讨论】:

  • content=data_only 将导入行数据,我该如何创建包和索引?
  • 我简要地查看了 DATAPUMP API 链接。我没有看到改变导入执行顺序的方法(我是否简要提到过)。我错过了吗?
  • 您可以通过多次尝试导入架构:首先是表和表的数据,然后是函数,最后是索引。我相信它必须可以实施。
  • 我同意 zaratustra 的观点,即多次运行可能是最好的解决方案。为了避免索引和数据泵出现类似问题,我必须这样做。
猜你喜欢
  • 1970-01-01
  • 2018-10-04
  • 2012-07-22
  • 1970-01-01
  • 2010-10-15
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多