Private IPに対するDB Linkを使用したネットワーク・リンク・インポート

#はじめに
Private IPに対するデータベース・リンクを作成できるようになったので、これを使用したネットワーク・リンク・インポートでAutonomous Databaseへデータをインポートする方法をご紹介します。

ネットワーク・リンク・インポートは、impdpクライアントの接続先となるシステムから、指定されたソース・データベースに接続し、そこからデータを取り出して、接続されたインスタンスのデータベースに直接書き込みます。ダンプ・ファイルは必要ないので、手軽に異なるインスタンスのスキーマからデータをロードできるというメリットがあります。

Private IPに対するデータベース・リンクの作成方法については、<a href="https://qiita.com/wahagon/items/7964b3ab19da625bfb39" target="_blank" rel="noopener noreferrer">こちらの記事</a>でご紹介しています。今回はこの記事で作成したHR_LINKを使用して、プライベートネットワーク内のDBCSのHRスキーマをADBへインポートしてみます。



#事前準備
①ADMINユーザーで接続し、ADB側でサンプルスキーマdump_userを作成します。

```sql
create user dump_user identified by Welcome12345#:
grant dwrole, unlimited tablespace to dump_user;
```

:::note info
ADBでData Pumpを使用するには、dwroleかDATAPUMP_CLOUD_IMP・DATAPUMP_CLOUD_EXPロールが必要です。
:::

②DBCS側スキーマに権限付与

```sql
grant exp_full_database to HR;
```

:::note warn
EXP_FULL_DATABASEロールにはデータベース管理者に近いデータ操作権限が割り当てられてしまいますので、一時的に付与することをおすすめします。
:::


#パラメータファイル作成
コマンド簡略化のため、今回はパラメータファイルを用意しそちらを実行します。

```impdp.par
DIRECTORY=data_pump_dir
NETWORK_LINK=HR_LINK
TABLE_EXISTS_ACTION=TRUNCATE
REMAP_SCHEMA=HR:dump_user
REMAP_TABLESPACE=USERS:DATA
```

+ DATA_PUMP_DIRは、事前定義された唯一のディレクトリです。 ディレクトリを以前に作成し、そのディレクトリに対する書込み権限がある場合は、directory引数として別のディレクトリを指定できます。 ディレクトリの作成の詳細は、<a href="https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/create-directory.html#GUID-4DE91325-5D60-49E8-8D82-159AAA8994D2" target="_blank" rel="noopener noreferrer">Autonomous Databaseでのディレクトリの作成</a>を参照してください。

+ NETWORK_LINKに作成済みのデータベース・リンクHR_LINKを指定します。

+ 今回は表単位のロードを行うため、TABLESで指定しています。スキーマ単位や表領域単位でロードすることもできます。詳細は<a href="https://docs.oracle.com/cd/F19136_01/sutil/datapump-import-utility.html#GUID-AAA85047-A8DD-4F21-9EA2-9363D290648D" target="_blank" rel="noopener noreferrer">Oracle Data Pump Importのモード</a>を参照してください。

+ TABLE_EXISTS_ACTION=TRUNCATEは、パーティションやインデックスを見直して新規に一括作成したい場合に指定します。

+ REMAP_SCHEMA=HR:dump_userは、DBCS側のHRスキーマにあるすべてのオブジェクトをターゲット・スキーマであるADB側のdump_userスキーマにロードします。

+ その他のimpdpのパラメータについては、<a href="https://docs.oracle.com/cd/F19136_01/sutil/datapump-import-utility.html#GUID-BA74D4F6-2840-4002-A673-0A7D9CBB3D78" target="_blank" rel="noopener noreferrer">Oracle Data Pump Importコマンドライン・モードで使用可能なパラメータ</a>を参照してください。

#impdp実行
ADBに接続できる踏み台サーバー上で以下を実行します。

```
impdp admin/Welcome12345#@(接続識別子) parfile=impdp.par
```

今回HR_LINKを作成したのはADMINユーザーなので、ADMINでADBに接続しています。

#ロードされたデータの確認
dump_userでADBに接続し、データを確認してみます。

```sql
select * from countries;
```

```
CO COUNTRY_NAME                              REGION_ID
-- ---------------------------------------- ----------
AR Argentina                                         2
AU Australia                                         3
BE Belgium                                           1
BR Brazil                                            2
CA Canada                                            2
CH Switzerland                                       1
CN China                                             3
DE Germany                                           1
DK Denmark                                           1
EG Egypt                                             4
FR France                                            1
IL Israel                                            4
IN India                                             3
IT Italy                                             1
JP Japan                                             3
KW Kuwait                                            4
ML Malaysia                                          3
MX Mexico                                            2
NG Nigeria                                           4
NL Netherlands                                       1
SG Singapore                                         3
UK United Kingdom                                    1
US United States of America                          2
ZM Zambia                                            4
ZW Zimbabwe                                          4

25 rows selected.
```

無事DBCS側のHRスキーマの表がADBにロードされたことが確認できました。

#参考文献
<a href="https://docs.oracle.com/cd/F19136_01/sutil/datapump-import-utility.html" target="_blank" rel="noopener noreferrer">ネットワーク・リンク・インポート</a>

<a href="https://qiita.com/wahagon/items/7964b3ab19da625bfb39" target="_blank" rel="noopener noreferrer">Autonomous Databaseからプライベートネットワーク内のDBCSにデータベースリンクを作成する</a>