75731
Data
Pumpによるダンプファイルのインポートがうまくいきません。それぞれ別のスキーマに作成した以下の2つのテーブルをエラーなく別のデータベースへインポートする為にはどのような手段が考えられますでしょうか。

```

    /* 部門マスタ */
    create table bumon(
      code char(2) primary key,
      bname varchar2(10)
    );
    
    /* 社員マスタ */
    create table syain(
      id char(5) primary key,
      uname varchar2(10),
      bcode char(2)
    );
    
    alter table syain add constraint fk foreign key (bcode) references bumon (code);
    
```

expdp/impdpコマンドはスキーマ単位で実行しており、上記、「部門マスタ」を持つTESTスキーマからインポートを試みると以下のエラーが出ます。

```

    ORA-39083: オブジェクト型OBJECT_GRANTの作成が次のエラーで失敗しました:
    ORA-01917: ユーザーまたはロール'TEST2'は存在しません
    
    エラー文は次のとおりです:
    GRANT REFERENCES ON "TEST"."BUMON" TO "TEST2"
    
```

そのまま「社員マスタ」を持つTEST2スキーマをインポートすると以下のエラーが出ます。

```

    ORA-31685: 権限が不十分なため、オブジェクト型REF_CONSTRAINT:"TEST2"."FK"が失敗しました。エラー文は次のとおりです:
    ALTER TABLE "TEST2"."SYAIN" ADD CONSTRAINT "FK" FOREIGN KEY ("BCODE") REFERENCES "TEST"."BUMON" ("CODE") ENABLE
    
```

TEST2スキーマ→TESTスキーマの順でインポートを行うと、TEST2スキーマのインポート時に以下のエラーが出ます。

```

    ORA-39083: オブジェクト型REF_CONSTRAINT:"TEST2"."FK"の作成が次のエラーで失敗しました:
    ORA-00942: 表またはビューが存在しません。
    
    エラー文は次のとおりです:
    ALTER TABLE "TEST2"."SYAIN" ADD CONSTRAINT "FK" FOREIGN KEY ("BCODE") REFERENCES "TEST"."BUMON" ("CODE") ENABLE
    
```

結果、不完全にインポートされたスキーマを確認するとTEST2スキーマのSYAINテーブルに外部キーが作成されておらず、完全なインポートができません。現在は試験的にたった2つのスキーマ、2つのテーブルで試行錯誤しているのですが、実務では移行するデータ量も膨大になり、このような段階でつっかえていてはまったく話にならないと思います。

どなたかお詳しい方いらっしゃいましたらどうか知恵を授けて頂きたく思います。

すいません。情報追加いたします。

移行元DB  
OS : Oracle Linux 7.7  
DB : Oracle 12cR1  
スキーマ : test, test2（testスキーマに存在するテーブルを参照する外部キーを持ったテーブルを持つスキーマ）  
表領域 : USERS（test, test2共に同じ）

移行先DB  
OS : CentOS 8.1  
DB : Oracle 19c

エクスポートコマンド

```

    expdp system/XXXXXXXX@orcl directory=test_dir dumpfile=${dumpfile_name}_${sysdate}.dmp logfile=${logfile_name}_${sysdate}.log schemas=${schema_name}
    
```

インポートコマンド

```

    impdp system/XXXXXXXX@orcl directory=test_dir dumpfile=${dumpfile_name}.dmp logfile=${logfile_name}.log schemas=${schema_name}
    
```
CC BY-SA 4.0
2021-05-07T14:06:52.550
75729
2021-05-08T06:47:40.850
2021-05-08T06:47:40.850
3060
44175
question
database oracle
Data Pumpを使用したデータ移行でインポートに失敗する
expdp 及び、 impdp の両コマンドでのオプションを明示していないので、何が起きているのかはっきりとは判り兼ねます。  
schemas オプションは指定されているのでしょうか？  
それから、expdp impdp をお使いとのことなので、 oracle 11g 以降だとは思いますが、  
バージョン位は示していただければと思います。

インポートする対象は表(テーブル)だけなのでしょうか？  
インポート先の schemas はイクスポート側の schemas と同じなのでしょうか？

判らないことが多いと感じました。

以下のリンクは参考になりますか：  
<https://oracle-chokotto.com/ora_import_impdp.html>  
<https://docs.oracle.com/cd/E16338_01/server.112/b56303/dp_import.htm>  
<https://www.sql-dbtips.com/expdp-impdp/datapump-impdp/>  
<http://alphafocus.cocolog-nifty.com/blog/2011/05/tips-oracleimpd.html>
CC BY-SA 4.0
2021-05-07T16:18:11.177
75731
2021-05-07T16:18:11.177
43029
75729
answer