2012-04-21 26 views
1

Oracle 11g R2を使用して大きなプロジェクトを開発しています。当社のデータベースは、多数のパーティションごとの参照(Oracle 11の機能)を備えた170を超えるテーブルで構成されています。参照によってパーティションがあるテーブルがある場合、data-pumpによって作成されたファイルをインポートできません。

は、我々はポートに別のデータベースへの私達のデータベースをしたい回ありますので、我々はすべてがうまく行くのデータをエクスポートするとき、データ・ポンプを使用してダンプファイルを作成しますが、私たちは別のデータベースにインポートすることはできません。

通常は適切なテーブルをインポートするときにインポートされますが、参照テーブルによるパーティションはインポートされません。

参照テーブルでパーティションを作成する場合、外部キー(どちらのパーティションに基づいているか)は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: 我々は考え出し問題はfのパーティションにのみ存在するクロススキーマであるoreignキー。

そこで質問がすでに存在している、すべて一緒にスキーマによって/クロススキーマパーティションを持つインポートテーブルをエクスポートする方法はありますか?

+1

これはおそらく恐ろしい答えです:それは私のために働いています(11.2.0.1)。完全に再現可能なテストケース、DDL、DML、expdb、impdbコマンドなどを投稿できますか? –

+0

それは今夜真夜中で、私は家にいます、明日投稿します。 –

答えて

0

問題を再現できました。私は、コマンドラインIMPDBを使用した場合、それは私に、より便利なエラーメッセージを与えた:

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

あなたはMy Oracle Supportの上でそれらを調べる場合は、問題はおそらく11.2.0.2で修正されたバグ8477142.を見つけることができます。

+0

私たちはOracle 11.2.0.2を使用していて、同じ問題に直面しています –

+0

オラクルのバグ8477142はどこで入手できますか? –

+0

あなたはsupport.oracle.com –

関連する問題