Oracle11g 当存在按引用分区的表时,无法导入数据泵创建的文件

Oracle11g 当存在按引用分区的表时,无法导入数据泵创建的文件,oracle11g,data-migration,database-partitioning,datapump,Oracle11g,Data Migration,Database Partitioning,Datapump,我们正在使用Oracle 11g R2开发一个大型项目。我们的数据库由170多个表组成,其中包含大量引用分区(Oracle11特性) 有时我们希望将数据库移植到另一个数据库,因此我们使用数据泵创建一个转储文件,在导出数据时一切正常,但我们无法将其导入另一个数据库 当导入正确的表时,通常导入,但不导入按引用分区的表 当通过引用表创建分区时,应该在create table语句中创建外键(分区基于该外键),但数据泵似乎在脚本末尾创建了所有外键 我不敢相信Oracle的人忘记升级Oracle 11g中的

我们正在使用Oracle 11g R2开发一个大型项目。我们的数据库由170多个表组成,其中包含大量引用分区(Oracle11特性)

有时我们希望将数据库移植到另一个数据库,因此我们使用数据泵创建一个转储文件,在导出数据时一切正常,但我们无法将其导入另一个数据库

当导入正确的表时,通常导入,但不导入按引用分区的表

当通过引用表创建分区时,应该在
create table
语句中创建外键(分区基于该外键),但数据泵似乎在脚本末尾创建了所有外键

我不敢相信Oracle的人忘记升级Oracle 11g中的数据泵。有人知道如何解决这个问题吗

更新1: 以下是我们使用的导入脚本和脚本:

出口:

declare
    h1   NUMBER;
begin
    h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => 'EXPORT000185', version => 'COMPATIBLE'); 
    dbms_datapump.set_parallel(handle => h1, degree => 1); 
    dbms_datapump.add_file(handle => h1, filename => '910202.LOG', directory => 'DATA_PUMP_DIR', filetype => 3); 
    dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0); 
    dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''PAYESH_ACCOUNTING'',''PAYESH_CORE'',''PAYESH_CRM'',''PAYESH_LIFE'',''PAYESH_SECURITY'')'); 
     dbms_datapump.add_file(handle => h1, filename => '910202_db4.DMP', directory => 'DATA_PUMP_DIR', filetype => 1); 
    dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1); 
    dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC'); 
    dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS'); 
    dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0); 
    dbms_datapump.detach(handle => h1); 
end;
进口:

declare
    h1   NUMBER;
begin
    h1 := dbms_datapump.open (operation => 'IMPORT', job_mode => 'SCHEMA', job_name => 'IMPORT000189', version => 'COMPATIBLE'); 
    dbms_datapump.set_parallel(handle => h1, degree => 1); 
    dbms_datapump.add_file(handle => h1, filename => '910228.LOG', directory => 'DATA_PUMP_DIR', filetype => 3); 
    dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0); 
    dbms_datapump.add_file(handle => h1, filename => '910128.DMP', directory => 'DATA_PUMP_DIR', filetype => 1); 
    dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''PAYESH_ACCOUNTING'',''PAYESH_CORE'',''PAYESH_CRM'',''PAYESH_LIFE'',''PAYESH_SECURITY'')'); 
    dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1); 
    dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC'); 
    dbms_datapump.set_parameter(handle => h1, name => 'SKIP_UNUSABLE_INDEXES', value => 0); 
    dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0); 
    dbms_datapump.detach(handle => h1); 
end;
更新2: 我们发现问题只存在于跨模式的外键分区上


所以问题已经存在了,有没有办法导出/导入带有跨模式分区的表,这些表都是按模式一起进行的?

我能够重现您的问题。当我使用命令行IMPDB时,它给了我一条更有用的错误消息:

ORA-39083: Object type TABLE:"SCHEMA2"."CHILD_TABLE" failed to create with error:
ORA-00942: table or view does not exist

如果你在我的Oracle支持上查找这些,你会发现Bug 8477142。这个问题应该在11.2.0.2中解决。

下面是你可能害怕的答案:它对我有效(在11.2.0.1中)。你能发布一个完全可复制的测试用例、DDL、DML、expdb和impdb命令等吗?现在已经是午夜了,我在家,明天我会发布。我们正在使用Oracle 11.2.0.2,但仍然面临同样的问题我在哪里可以找到Oracle bug 8477142?你需要使用support.Oracle.com尽管你的回答对我的问题没有帮助,但这是一种帮助。