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キー。
そこで質問がすでに存在している、すべて一緒にスキーマによって/クロススキーマパーティションを持つインポートテーブルをエクスポートする方法はありますか?
これはおそらく恐ろしい答えです:それは私のために働いています(11.2.0.1)。完全に再現可能なテストケース、DDL、DML、expdb、impdbコマンドなどを投稿できますか? –
それは今夜真夜中で、私は家にいます、明日投稿します。 –