OCI Data Integrationを使用しオブジェクト・ストレージからOracle DBにデータをロードする

本ブログは、[オラクル・クラウドの個人ブログ](https://qiita.com/letian/items/10152a4fec813c1b7d98)の1つです。

# 初めに
これまでの[ODIシリーズ](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98#data-integration-odi-on-p-odi-mp-oci-di)の記事では、各種のODI製品（サービス）の差異を含め、さまざまなトピックを紹介してきました。今回は、OCI Data Integraton (以下 <font color=blue>OCI DI</font> と省略)の一般的な利用場面を紹介したいと思います。

__検証シナリオ__
オブジェクト・ストレージ上のJSONファイルからデータを読み込み、それをターゲットDBに(<strong>Oracle DB</strong>を例に)をロードします。この例では、単一のソースファイルからデータを読み込み、そのままDBにロードするため、データの編集やマージなどの機能には触れません。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/16dc5b2d-392e-b1da-d8e0-206191641e41.png", width="500">

オブジェクト・ストレージや Oracle DB 以外にも、多くの種類のデータ・ソースがサポートされています。詳細のリストについて、[こちら](https://docs.oracle.com/ja-jp/iaas/data-integration/using/data-assets.htm#data-sources)をご参照ください。

__目次__

- [1. 事前準備](#1-事前準備)
  - [1-1. ネットワーク・リソース](#1-1-ネットワークリソース)
  - [1-2. バケットとターゲットDB](#1-2-バケットとターゲットdb)
  - [1-3. IAM ポリシー](#1-3-iam-ポリシー)
- [2. ワークスペースの作成](#2-ワークスペースの作成)
- [3. データ・アセットの作成](#3-データアセットの作成)
  - [3-1. ソース側（オブジェクト・ストレージ）](#3-1-ソース側オブジェクトストレージ)
  - [3-2. ターゲット側（Oracle DB）](#3-2-ターゲット側oracle-db)
- [4. データフローの作成](#4-データフローの作成)
- [5. 統合タスクの作成と実行](#5-統合タスクの作成と実行)
  - [5-1. 統合タスクの作成](#5-1-統合タスクの作成)
  - [5-2. アプリケーションの作成](#5-2-アプリケーションの作成)
  - [5-3. アプリケーションへのタスクの公開](#5-3-アプリケーションへのタスクの公開)
  - [5-4. タスクの実行](#5-4-タスクの実行)
- [トラブル・シューティング](#トラブルシューティング)
  - [問題-1 (オブジェクト・ストレージへのテスト接続はタイムアウト)](#問題-1-オブジェクトストレージへのテスト接続はタイムアウト)
  - [問題-2 (Oracle DBへのテスト接続はタイムアウト)](#問題-2-oracle-dbへのテスト接続はタイムアウト)

# 1. 事前準備
## 1-1. ネットワーク・リソース
OCI DI のワークスペースを作成する際、VCN内部か外部どちらかを指定できます。今回の例は、デフォルトの選択肢（<strong>VCN内部</strong>）を選び、プライベート・サブネットで作成します。

Oracle DBは、同じリージョンかつ同じVCNの下にある<strong>異なるプライベート・サブネット</strong>に格納されます。OCI DIからはサービス・ゲートウェイを経由して、同じリージョンのオブジェクト・ストレージにアクセスします。これらのデータ転送はすべてインターネットを経由せずにOCI内部で行われます。

この例では、OCI DIから他のリソースにアクセスするために、ワークスペースが所属するサブネットに対して<strong>セキュリティ・リスト</strong>を付与する必要があります。設定の詳細は以下の通りです。

|タイプ|項目|値|コメント|
|:--|:--|:--|:--|
|VCN|CIDR|10.0.0.0/16|
|プライベート・サブネット|名前|Private Subnet <font color=blue>DI</font>|ワークスペースの格納先|
||CIDR|10.0.5.0/24||
|プライベート・サブネット|名前|Private Subnet <font color=blue>DB</font>|ターゲットDBの格納先|
||CIDR|10.0.6.0/24||
|サービス・ゲートウェイ|サービス|"<strong>All Region-ID Services in Oracle Service Network</strong>"|サービスの指定が間違っている場合、接続時タイムアウトが発生する。|
|ルート表 (Private Subnet <font color=blue>DI</font> に付ける)|ルール|ターゲット・タイプ: サービス・ゲートウェイ<br>宛先サービス: "<strong>All Region-ID Services in Oracle Service Network</strong>"|宛先サービスの指定が間違っている場合、接続時タイムアウトが発生する。|
|セキュリティ・リスト (Private Subnet <font color=blue>DI</font> に付ける)|Ingress|空白でよい|OCIコンソールでDIを操作する|
||Egress|0.0.0.0/0, TCP All|ポートを絞りたい場合、ALLではなく、<font color=blue>443 </font>(Object Storage) と <font color=blue>1521</font> (Oracle DB) に変更|
|セキュリティ・リスト (Private Subnet <font color=blue>DB</font> に付ける)|Ingress|ソース CIDR: <strong>10.0.5.0/24</strong><br>プロトコル: TCP<br>宛先ポート: <font color=blue>1521</strong>|ワークスペースからのアクセスを許可|
||Egress|0.0.0.0/0, TCP All||

## 1-2. バケットとターゲットDB
一個のJSONファイルをバケットに保存しておきます。サンプル・データは、[ここ](https://docs.oracle.com/ja-jp/iaas/data-integration/tutorial/tutorials/00_get_sample_data.htm#sample-data)からダウンロードしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b00541c2-b808-af3c-2c38-e4c046fbb31f.png)


この例で使用しているDBの情報は以下の通りです。
DB タイプ：Oracle Base DB (VM)
DB バージョン：19c Standard Edition

後ほど、<font color=blue>SCAN DNS 名</font>で接続しますので、それをコピーしておいてください（プライベートIPを使用しても構いません）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/03f1c348-63cc-3cf5-573a-3d11faf107f8.png)

__ユーザの作成__
SQL Plusで以下のコマンドを実施します。

管理者ユーザでPDBにログイン：
```
sqlplus system/<password>@<Private_IP>:1521/db19cse_pdb1.privatesubnetdb.vcn1.oraclevcn.com
```
ユーザ作成と権限の付与：

```
create user DIUSER identified by "<password>";
grant create table to DIUSER;
grant unlimited tablespace TO DIUSER;
```
__テーブルの作成__
作成したユーザでPDBにログイン：
```
sqlplus DIUSER/<password>@<Private_IP>:1521/db19cse_pdb1.privatesubnetdb.vcn1.oraclevcn.com
```

テーブル作成用SQLの実行：
```
SQL> @create_customers_target.sql
```
SQL文は、[ここ](https://docs.oracle.com/ja-jp/iaas/data-integration/tutorial/tutorials/02-connecting-to-data-sources.htm#prep-target-schema)より取得できます。

## 1-3. IAM ポリシー
必要なポリシーは、ワークスペース作成画面から次のように確認できます。

Data Integration -> Workspace -> Show more information
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/09793948-c5fe-1109-b90e-4abf8a9a2868.png)

この例では、枠線内のポリシーを参考にして作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/43f28c75-7936-abcc-12af-f1376e3c2856.png)

__グループとポリシーの設定例__
グループ名：<strong>OCI_DI_GRP</strong>  (ユーザを入れる)

ポリシー：OCI_DI_Policy (作業用Compartmentの下に)
ステートメント：
```
allow service dataintegration to use virtual-network-family in compartment Liu
allow group OCI_DI_GRP to manage dis-workspaces in compartment Liu
allow group OCI_DI_GRP to manage dis-work-requests in compartment Liu
allow group OCI_DI_GRP to use virtual-network-family in compartment Liu
allow group OCI_DI_GRP to manage tag-namespaces in compartment Liu

Allow group OCI_DI_GRP to use object-family in compartment Liu
Allow any-user to inspect compartments in compartment Liu where ALL {request.principal.type='disworkspace'}
Allow any-user to use buckets in compartment Liu where ALL {request.principal.type = 'disworkspace', request.operation = 'GetBucket'}
Allow any-user to manage objects in compartment Liu where ALL {request.principal.type = 'disworkspace'}
```
※、この時点で、ワークスペースをまだ作成していないので、取り敢えず`request.principal.id='<workspace_ocid>'`という条件を外します。ワークスペース作成後、OCIDを取得し追加してもOKです。

# 2. ワークスペースの作成
OCIメニュー -> Analytics & AI -> Data Integration
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/28c9c802-d66c-fc5d-af8e-e45915ecd8c2.png", width="450">

Workspace  -> Create workspace
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/5f2293eb-7566-6cb2-cb1d-e2ad39c35870.png">

__作成用情報を入力__
ワークスペースは、２種類のネットワークタイプがあります。VCNの内部か外部のどちらに指定できます。この例は、デフォルトの"<font color=blue>Enable private network</font>"を利用しますので、チェックを入れたままでOKです。ワークスペースの名前を入力し、VCNとサブネットを指定してから、作成ボタンをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/3c0f04d2-02b4-3275-252c-4bea2d6db3eb.png", width="600">

自分の環境では、作成完了まで約10分かかりました。ステータスは自動的にリフレッシュされないので、ご注意ください。長い時間が経っても「Active」にならない場合は、手動で画面をリフレッシュしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b958ed5a-3f10-23ec-ca71-4a82d42b94b1.png)

# 3. データ・アセットの作成
作成したワークスペースをクリックすると、下記のホーム画面に入ります。ソースとターゲットに接続するため、データ・アセットを作成します。作成画面に入るには、以下のいずれかの方法を選択できます。
- 左上の"<font color=blue>+</font>"をクリックし、"Data assets"をクリックする。
- 左上の"<font color=blue>Data assets</font>"を直接にクリックする。
- "Quick actions"の枠に、"<font color=blue>Create data asset</font>"をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f8b4433d-81f3-4231-c207-f1e67d0c52de.png)

"Quick actions"の場合、以下のデータ・アセットの一覧画面を飛ばして、直接作成画面に入ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/aca0566c-00b2-0d0e-55df-8bd9cf8cc163.png)

## 3-1. ソース側（オブジェクト・ストレージ）
ソース側は、オブジェクト・ストレージで、以下のようにタイプを指定してください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/936241ee-4b62-e071-7555-40339ecffe5d.png", width="650">

テナンシOCID、ネームスペース、およびリージョンは自動的に入力されますので、そのままでOKです。他のリージョンやテナンシを指定したい場合は、関連情報を取得して置き換えてください。

（関連情報の取得方法を省略します。ネームスペースの取得方法が分からない場合は、[こちら](https://qiita.com/liu-wei/items/c97c56c3037c91b78145#1-2-%E3%83%8D%E3%83%BC%E3%83%A0%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AE%E7%A2%BA%E8%AA%8D)をご参照ください。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/ae6ac991-4f19-99b7-ed11-e02e2dfdd3f4.png", width="600">

オブジェクト・ストレージにアクセスするため、ポリシーの設定は必要です。事前準備のステップで既に設定済で、ここには何をしなくてもよいです。ポリシーの設定方法を確認したい時、"<font color=blue>Show more information</font>"をクリックすれば、詳細内容が見られます。

"Test connection"をクリックし、接続をテストします。成功のメッセージを確認したら、接続情報を保存します。接続が失敗した場合、[トラブル・シューティング](#トラブルシューティング)をご参考ください。

接続が失敗しても、一旦入力情報を保存しておき、後ほど編集してもOKです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/ba4d1c85-ec2f-0b87-b9ae-4c471b2b52f5.png", width="400">

データ・アセット作成後：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fc61499d-1ab9-c1e5-f018-336ae6b5ce3f.png)

バケット一覧画面からは、バケットとその中身のオブジェクトを確認できます。バケットを見るためには、まずCompartmentを指定してください（<strong>デフォルトは空白</strong>になっていますのでご注意ください）。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f70a02a1-8efc-b1f5-1914-5e8999d7b0e5.png", width="650">

## 3-2. ターゲット側（Oracle DB）
Data Integration -> DI_Workspace_Private -> Quick actions (Create data asset)

タイプは、"Oracle DB"を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1b5eee6f-c8c1-45ea-2f90-27ef8870c6da.png", width="600">

以下のように接続情報を入力します。
- ホスト：SCAN DNS 名 (プライベートIPでもよい)
- ポート：1521
- サービス名：PDBのサービス名 (サービス名の取得方法を分からない方は、[こちら](https://qiita.com/liu-wei/items/ecab5bc23efd13410dac)をご参照ください。)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c1701ff3-7e3a-fe59-e54d-6020a6837c3b.png", width="550">

データ・アセット作成後：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/9357b163-3653-48bd-964a-99d0f9749e4d.png)

テーブルの確認：
Details -> Schemas -> "DIUSER"を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/30c63962-5160-f5bd-3220-f04b1fd18cc6.png)
表名をクリックしたら、テーブルの構成も確認できます。

# 4. データフローの作成
__"My First Project"の利用__

プロジェクトを新規作成しても構いませんが、この例では既存の"My First Project"をそのまま利用します。入口は、以下のいずれでも構いません。
- 左上の"<font color=blue>+</font>"をクリックし、"Projects"をクリックする。
- 左上の"<font color=blue>Projects</font>"を直接にクリックする。
- "Recents"の枠に、"<font color=blue>My First Project</font>"をクリックする。 (一回利用したことがある場合)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a3afdeac-6413-c957-ae7a-a4f4cdc90e3c.png", width="650">

__データフローの作成__
"Create data flow"をクリックし、作成を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fe580d83-ea18-0398-b701-dfa2f5d4c0e1.png)

フローの名前(`Load Customers Data`)を入力し、「作成」をクリックします。デザイナは開いたままになっており、編集を続行できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/90503ac6-ac9b-b2d8-709d-d1c3cbba8ca5.png)

__ソースとターゲットの編集__
画面左側の矢印アイコンをクリックすると、各アイコンの詳細情報が表示されます。ソースとターゲットのアイコンを画面の中にドラッグアンドドロップします。そして、ソースとターゲットの間に線を結びつけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f5595426-dc07-ace7-eebb-856b8f769fdd.png)

ソースを選択し、IDとのデータ・アセットの情報を設定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/88a7fd89-08cc-e243-e298-67bac3970067.png", width="500">

ターゲットを選択し、IDとのデータ・アセットの情報を設定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/e56da388-ab5c-6419-09fe-a1729b33946e.png", width="500">

編集後、「保存してクローズ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/2e494b87-6ca3-aebd-94f5-50c6e683b9be.png)

# 5. 統合タスクの作成と実行
## 5-1. 統合タスクの作成
Quick actions → Create integration Task
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fb912fe5-3a88-b041-b8a2-94c7d25cfef3.png", width="600">

タスク名を入力し、プロジェクトを選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d8416b16-0c78-c043-a9d9-a35ed47e59bc.png", width="600">

この例は、既存の"My First Project"を使います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8c7bd2e2-a16c-07a0-0625-9c96d6e3f7c5.png", width="350">

引き続き、データフローを選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/895a5614-4bad-a359-4fa7-8e0d1fff4671.png", width="600">

作成したデータフローを指定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/3a17e935-bc78-b81b-4df2-371afce02e3b.png", width="500">

選択後、Validaton(検証)が自動開始します。成功を確認した後、「作成してクローズ」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/93420b38-8f78-ec86-6757-68e877ce07f4.png", width="650">

__注意：__ テーブルに既存データがある場合、キー違反により検証が失敗する可能性があります。

## 5-2. アプリケーションの作成
入り口は、以下のどちらでもOKです。
- Quick actions → Create application
- Menu  → Applications -> Create application (as below)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f24f315b-179a-61be-8ba8-fdcdc75d2eac.png", width="600">
作成をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/75d42d43-ea35-4112-3116-330363f1cedf.png", width="600">
アプリケーション名を入力し、作成を開始します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/4ef8b834-c954-5046-f655-e89cf9c1f111.png", width="600">

## 5-3. アプリケーションへのタスクの公開
プロジェクトの下のタスクに入って、右側のメニューから"Public to application"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/83d738cf-d402-4160-67fd-e3999e0419ae.png)

アプリケーションを選択し、公開します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8ca98a2c-17af-3788-ef0a-d6d648a43de7.png", width="500">

## 5-4. タスクの実行
アプリケーションの画面に移動して、タスクを実行します。

Application: Application_Sample → Tasks → IntegrationTask_Sample → Run
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/caf031cd-5663-78c5-a3c3-9de76e03ec3f.png)

実行結果を確認します。（実行のステータス：未開始 → キュー済 → 実行中 → 成功）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/17d9c2ff-2c73-2044-6c55-13cfa95721bf.png)

成功した場合、ログが表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/63688a20-fe42-c65e-5cdd-6efaad1cefed.png)

テーブルの中身を確認します。
__方法１__
データ・アセットの詳細 -> Schemas -> DIUSERを選択 -> Data entities -> テーブル名を選択 -> Data
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fef96021-beaa-1fe9-d15a-2ecd5ae3498a.png)

__方法２：__ SQL Developerでテーブルの中身と件数を確認します。
テーブルの中身：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/510692d1-bd94-aeb5-eeb1-e26e3848b462.png)

テーブルの件数：
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/83301d0b-66da-35d9-8063-726c293e2346.png", width="400">

ここまで、OCI DI で成功にデータを Oracle DB にロードできました。お疲れ様です。

# トラブル・シューティング

## 問題-1 (オブジェクト・ストレージへのテスト接続はタイムアウト)
<strong>現象</strong>: テスト接続は、タイムアウトが発生し接続できない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d4c1b168-e371-e689-89a4-97125c93aa9b.png)
<strong>可能な原因-1</strong>: ポリシー設定は足りない。
<strong>対策</strong>：[1-3. ポリシー](#1-3-ポリシー)の設定内容に合っているかをもう一度確認してください。

<strong>可能な原因-2</strong>: セキュリティ・リストは、設定不正か漏れがある。
<strong>対策</strong>：ワークスペースが所属するプライベート・サブネットに対し、セキュリティ・リストを付けて以下のように、<font color=blue>Egress</font> ルールを設定する。

- 宛先のCIDR: 0.0.0.0/0 
- IP プロトコル: TCP 
- 宛先ポート：ALL （通常は、Allを指定してもよい。ポートを絞りたい時、オブジェクト・ストレージにアクセスするのに、<font color=blue>443</font> ポートを指定する。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/71d995be-b6db-eb18-c1a1-05bda941df54.png", width="650">

<strong>可能な原因-3</strong>: ルート表にサービス・ゲートウェイの設定がない。
<strong>対策</strong>：以下のようにサービス・ゲートウェイを追加し、宛先サービスは、"All Region-ID Services in Oracle Services Network"を指定する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a2db7394-365b-ede7-c1e3-e95860848171.png", width="650">

<strong>可能な原因-4</strong>: サービス・ゲートウェイの設定があるが、サービスのタイプが間違った。
<strong>対策</strong>："<font color=blue>All Region-ID Services in Oracle Services Network</font>"を指定する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/dd4e2f6e-00bb-5b7c-4cc4-5d73ce833525.png", width="650">
"OCI Region-ID Object Storage"に指定した場合、タイムアウトが発生するので、ご注意ください。

## 問題-2 (Oracle DBへのテスト接続はタイムアウト)
<strong>現象</strong>: エラーメッセージは、問題１と同様（IDが毎回変わる）

<strong>可能な原因-1</strong>: セキュリティ・リストは、設定不正か漏れがある。
<strong>対策</strong>：ワークスペースが所属するプライベート・サブネットに対し、セキュリティ・リストを付けて以下のように、Egressルールを設定する。

- 宛先のCIDR: 0.0.0.0/0 (絞りたい時、Oracle DBのプライベートIPに設定)
- IP プロトコル: TCP 
- 宛先ポート：ALL （通常、Allを指定してもよいが、ポートを絞りたい時、Oracle DBへ接続するのには、<font color=blue>1521</font> ポートを指定する。）

以上です。

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[ODI On-PとODI MarketplaceとOCI Data Integrationの比較](https://qiita.com/liu-wei/items/dc527ad423fbd2f1742d)
[オブジェクト・ストレージからOracle DB 19c/21cにデータを導入する](https://qiita.com/liu-wei/items/398c91fd79a63eec6e7a)
[オブジェクト・ストレージからデータを Oracle DB/ADB にロードする方法のまとめ](https://qiita.com/liu-wei/items/83ef77ba85e0c34db970)

----
__オフィシャル・リンク__
[サービス・ホームページ](https://www.oracle.com/jp/integration/data-integration/) (価格表、見積もりを含める)
[ドキュメント・ホームページ](https://docs.oracle.com/ja-jp/iaas/data-integration/home.htm)
[データ統合のチュートリアル](https://docs.oracle.com/ja-jp/iaas/data-integration/tutorial/tutorials/index.htm) (オブジェクト・ストレージから Autonomous DB へ)
[Understanding VCN Configuration for Oracle Cloud Infrastructure (OCI) Data Integration](https://blogs.oracle.com/dataintegration/post/understanding-vcn-configuration-for-oracle-cloud-infrastructure-oci-data-integration)   (English blog)