对于具有用户定义类型的表,Dbms_datadump因ORA-39117而失败

时间:2014-06-27 14:35:11

标签: oracle11g datapump

我有一个包含用户定义类型列的表,我试图将表移动到另一个模式,

使用命令行模式工作正常,但是当我尝试使用DBMS_DATAPUMP时,它因ORA-39117错误而失败,下面是我使用的过滤器。

命令行模式:

bin/expdp user1/password1 directory=TEST_DIR1 include=TABLE:\"=\'TEST_TABLE_1\'\",TYPE:\"IN \(\'TEST_TYPE_1\'\)\" reuse_dumpfiles=y dumpfile=TEST.dmp logfile=expdpTEST.log

bin/impdp user1/password1 directory=TEST_DIR1 include=TABLE:\"=\'TEST_TABLE_1\'\",,TYPE:\"IN \(\'TEST_TYPE_1\'\)\" dumpfile=TEST.dmp logfile=impdpTEST.log  remap_schema=USER1:USER2 TRANSFORM=oid:n

使用上述命令,表移动成功。但是我们想用pl / sql块做同样的事情。

===Export===

DBMS_DATAPUMP.metadata_filter (
         handle   => h1,
         name     => 'NAME_EXPR',
         VALUE    => 'IN(''TEST_TABLE_1'',''TEST_TYPE_1'')'
);

dbms_datapump.metadata_filter(
handle => h1, name => 'INCLUDE_PATH_EXPR', value => 'IN (''TABLE'',''TYPE'')');


===Import===

DBMS_DATAPUMP.metadata_filter (
         handle   => h1,
         name     => 'NAME_EXPR',
         VALUE    => 'IN(''TEST_TABLE_1'',''TEST_TYPE_1'')'
      );
dbms_datapump.metadata_filter(
handle => h1, name => 'INCLUDE_PATH_EXPR', value => 'IN (''TABLE'',''TYPE'')');

1 个答案:

答案 0 :(得分:1)

此问题可能与impdp vs DBMS_DATAPUMP无关。我曾经在导入对象关系表时遇到很多问题。我们从来没有找到解决方案,问题似乎是“随机的” - 它会工作一天,而另一个因为我们从未发现的原因而失败。如果我没记错的话,我们猜测对象关系依赖存在问题,并通过在导入的其余部分之前手动导入几种类型来解决问题。

另一种可能性是导入成功并且错误消息错误。请参阅文档ID 783358.1 - ORA-39117在Impdp级别上错误地报告,在support.oracle.com上。