OCI MarketplaceからODIインスタンスを作成する方法

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

# 初めに
冒頭ですが、この記事の位置付けは、次のシリーズ記事の1つです。
[データ統合 (ODI On-P, ODI MP, OCI DI)](https://qiita.com/letian/items/10152a4fec813c1b7d98#%E3%83%87%E3%83%BC%E3%82%BF%E7%B5%B1%E5%90%88-odi-on-p-odi-marketplace-oci-di)

今回は、OCI MarketplaceからODIインスタンスを作成して、VNCでの接続方法を紹介したいと思います。

__事前準備__
Oracle Cloud Infrastructure(OCI)アカウント
SSHキーペア (ODIインスタンスに接続用)
SSHクライアント (e.g. Teraterm, Putty)
VNCクライアント (e.g. Tiger VNC, VNC Viewer)
Autonomous DB インスタンス (レポジトリ格納用)

＊Autonomous DBとODIインスタンスは、<strong>同じコンパートメント</strong>に格納しないといけません。

__ステップ__
[1. 動的グループを作成する](#1-動的グループを作成する)
[2. ポリシーを作成する](#2-ポリシーを作成する)
[3. OCI MarketplaceからODIインスタンスを作成する](#3-oci-marketplaceからodiインスタンスを作成する)
[4. SSHを使用してODIインスタンスに接続する](#4-sshを使用してodiインスタンスに接続する)
[5. VNCを使用してODIインスタンスに接続する](#5-vncを使用してodiインスタンスに接続する)
[うまくいかない時](#うまくいかない時)

# 1. 動的グループを作成する
ODIインスタンスに権限を付与するため、動的グループを作成します。

グループ名：`ODI_MP_DG`
ルール：`ALL {instance.compartment.id = '<compartment_ocid>'}`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/0750c9af-b382-bf5c-4058-df22e696d431.png)

# 2. ポリシーを作成する
ステートメント：`Allow dynamic-group ODI_MP_DG to manage all-resources in COMPARTMENT PoC`
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/58a466ff-4551-f902-4bfd-92db00a0796a.png" width="500">

ODIインスタンスを作成するOCIユーザーが、管理者グループに属していない場合は、このユーザーに特定のコンパートメントのリソースの管理権限を付与する必要があります。上記ポリシー作成画面に、下記ステートメントを追加します。
`Allow group ODI_MP_GRP to manage all-resources in COMPARTMENT PoC`
（OCIユーザーは、ODI_MP_GRPに属しています。）

# 3. OCI MarketplaceからODIインスタンスを作成する

MENU->Marketplace->All Applications
検索ボックスに「data integrator」と入力すると、ODIの関連製品が表示されます。この例では<font color=blue>Classic-BYOL</font>を使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/e86ce72f-bdf7-385f-30f2-127d32cb7d67.png)

「利用条件」に同意し、「スタックの起動」ボタンをクリックして開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fb5690a5-2bd7-c258-51a9-fcc7034a96db.png)

必要に応じて、名前と説明を入力します。 （オプション）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/17b8c059-160c-3014-8cdf-f5247abaa04b.png)

<strong>全体の設定</strong> (General Settings)

|項目|コメント|
|:------|:--------|
|Networking Options|この例では、"<font color=blue>Existing networking components will be used</font>"を指定します。<br>ほかの選択肢: "New networking components will be created"|
|ODI Repository Location|この例では"<font color=blue>Create a new Repository in an Autonomous Database</font>"を指定します。 <br>ほかの選択肢: "Connecting to an Existing Repository in an Autonomous Database" あるいは、"Create an Embedded Repository" |
|Resource Display Name Prefix (Optional)|空白のままにすると、プレフィックスは「odi_xxxxxxxx」になります。(`odi_<自動作成される８桁文字列>`)|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/4b4881a5-7045-f4d5-db55-ee4f05fc1b11.png)

<strong>ネットワーク構成</strong> (Network Configuration)
VCNとサブネットを選択します（この例ではパブリックサブネットを使用します）。
デフォルトで、「パブリックIPアドレスの割り当て」はチェックされていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b1413503-97ed-3ac1-c01d-a5942f6af15f.png)

<strong>ODIインスタンスの設定</strong> (ODI Instance Settings)

|項目|コメント|
|:------|:--------|
|ODI Node Shape|デフォルトはVM.Standard2.4です。|
|SSH Public Key|公開鍵を貼り付けます。|
|ODI Availability Domain|複数のドメインがある場合は、任意のドメインを選択できます。単一のドメインがある場合は、それを直接選択してください。|
|ODI VNC Password|VNCパスワードを入力します（VNCクライアントからODIに接続する場合に使用します）。確認用の<font color=blue>再入力はありません</font>ので、入力間違いのないことをご注意ください。|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c3583ab5-7a0e-4903-65a5-5d44bd20ad12.png)

<strong>新しいODIメタデータ・リポジトリ</strong> (New ODI Metadata Repository)
"Create a new Repository in an Autonomous Database"を指定した場合、以下の入力項目が表示されます。

|項目|コメント|
|:------|:--------|
|Autonomous Database Compartment|ADBが所属するコンパートメント。|
|Autonomous Database Instance|ADBのインスタンス名を指定（リストから選択）。|
|Autonomous Database Admin Password|adminユーザのパスワード（ADB作成時、決めたもの）。|
|Supervisor Password|ODI Supervisor用のパスワード（決めるもの）。<br><strong>英数字のみ</strong>|
|Schema Prefix|レポジトリ用スキーマの接頭辞（決めるもの）。|
|Schema Password|レポジトリ用スキーマのパスワード（決めるもの）。<br>12桁以上、かつ大文字、小文字、特殊文字が混在する必要がある|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d496ac69-6724-911a-8d2c-d173a939291a.png)

<strong>注意点</strong>
"Create a new Repository in an Autonomous Database"を指定しても、上記項目が表示されない場合、"ODI Repository Location"の選択肢を切り替えて、もう一度試してください（既知の問題のようです）。

<strong>Review</strong>
"Run Apply"（適用の実行）はデフォルトでチェックされています。これは、リソースがすぐにプロビジョニングされることを意味します。
確認後、「作成」ボタンをクリックして開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/ba27b10f-4706-c6da-8734-5c67c01882fb.png)

数分後、リソース・マネージャー・ジョブが完了しました。状態が「成功」であることを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/18e94f5b-691c-beb6-2e2a-f8f2f6172830.png)


# 4. SSHを使用してODIインスタンスに接続する
MENU-> Compute -> Instances
OCIコンソールからパブリックIPを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8eca55b2-aecf-b693-87be-866649c350c5.png)

SSHクライアントを起動してログインします。
ユーザ名: `opc`
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a7a0abc3-a5ce-41b3-1601-664f491471dc.png" width="450">

接続後、次のような情報が表示されます。ご覧のとおり、OSはAutonomous Linuxです。つまり、手動でパッチを適用する必要はありません。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b50a2f1b-9c8d-5e1d-e333-a160ac7459f7.png" width="650">

__VNCポート(5901)を開く__
このステップは<font color=blue>重要</font>です。デフォルトでは、VNCポート(5901)は開いていないため、firewall-cmdを使用してVNCポートを開く必要があります。

```
[opc@oracle-odi-inst-wc4b ~]$ sudo firewall-cmd --permanent --add-port=5901/tcp
success
[opc@oracle-odi-inst-wc4b ~]$ sudo firewall-cmd --reload
success
[opc@oracle-odi-inst-wc4b ~]$ sudo firewall-cmd --list-ports
5901/tcp
[opc@oracle-odi-inst-wc4b ~]$
```

__レポジトリのスキーマを確認__
Autonomous DBにレポジトリ関連のスキーマが作成されましたら、SQL Developerで確認した結果は、以下のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1d2571b8-0a3f-1480-a17f-fe4ba8b9c67a.png)

ADBにレポジトリを作成するのに、少し時間がかかります。作成の進捗を確認したいなら、ログファイルをご参照ください。
コマンド： tail -f /u01/oracle/logs/odiConfigure.log

```
...省略...
Repository Creation Utility - Checking Prerequisites
Checking Component Prerequisites
Repository Creation Utility - Creating Tablespaces
Validating and Creating Tablespaces
Create tablespaces in the repository database
Repository Creation Utility - Create
Repository Create in progress.
        Percent Complete: 12
Executing pre create operations
        Percent Complete: 30
        Percent Complete: 30
...省略...
```

# 5. VNCを使用してODIインスタンスに接続する
__VNCサービスの状態を確認する__
コマンド：`sudo systemctl status oraclevncodi.service`
```
[opc@oracle-odi-inst-pujd ~]$ sudo systemctl status oraclevncodi.service
● oraclevncodi.service - VNC server for ODI- instance
   Loaded: loaded (/usr/lib/systemd/system/oraclevncodi.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-06-26 09:15:19 GMT; 9min ago
    Tasks: 302
   Memory: 847.9M
   CGroup: /system.slice/oraclevncodi.service
           tq3843 /bin/Xvnc :1 -auth /home/oracle/.Xauthority -desktop oracle-odi-inst-pujd:1 (oracle) -fp catalogue:...
           tq4135 /usr/libexec/gnome-session-binary --session=gnome-classic
           tq4136 vncconfig -iconic
           tq4148 dbus-launch --sh-syntax --exit-with-session
<中略>
Jun 26 09:18:14 oracle-odi-inst-pujd gsd-color[4746]: could not find device: property match 'XRANDR_name'='VNC-0'...xist
Hint: Some lines were ellipsized, use -l to show in full.
```

__VNCクライアントを起動する__
VNC Viewerを起動し、`<Server_IP_Address>:<Port_Number>`でODIインスタンスに接続します（事前に、ODI Marketplaceに関連するNSGか、セキュリテ・リストを編集して、<strong>イングレス・ルール</strong>を追加してください）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/295f216f-7981-50ad-df8e-d7fdbb558b12.png" width="450">

VNCパスワードを入力すると、ODIインスタンスに接続できます。 （ODIインスタンスの作成時に指定したパスワードです。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/16d5f71b-8082-fb88-46c2-591ac9046d46.png" width="450">

ODIインスタンスに接続すると、次のようなウェルカムページが表示されます。画面の指示に従って、言語とキーボードを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/6d41d7c8-7841-f5d7-3a6f-b82f82084c92.png)

__ODI Studioを起動する__
デスクトップ上のアイコンをクリックして、ODI Studioを起動します。 （"Trust and Launch"（信頼して起動）を選択します。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8d4b927e-956f-6429-b58e-7ed97e8b572d.png)

以前のODI設定をインポートできます。 （ここでは、「いいえ」を選択してスキップします。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/9a91545e-9096-03db-6748-dc293205ca46.png" width="500">

ODI Studioを起動すると、次のようなスタートアップページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/17de795a-b280-15f9-8926-6b598c8f7506.png)

__レポジトリに接続する__
左上の"Connect to Repository..."をクリックすると、以下のように、ログイン画面表示されます。
既にログイン名が作成されますので、そのまま「OK」をクリックしてログインできます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/25452545-4ea2-8a08-ceb9-1f22375e4b8a.png", width="500">

「Topology」のタブで、OracleDIAgent1が既に作成済のことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/4ddd7921-a6a6-6bd9-cdc3-1d475767c96e.png)

エージェント作成後、`/u01/oracle/logs/odiConfigure.log`には、以下のようなメッセージが表示されます。
```
2022-03-31 08:29:15.011 NOTIFICATION ODI-1111 Agent OracleDIAgent1 started. Agent version: 12.2.1. Port: 20910. JMX Port: 20810.
2022-03-31 08:29:15.012 NOTIFICATION ODI-1136 Starting Schedulers on Agent OracleDIAgent1.
2022-03-31 08:29:16.002 NOTIFICATION ODI-1137 Scheduler started for work repository WORKREP on Agent OracleDIAgent1.
2022-03-31 08:29:25.847 NOTIFICATION Inside cleanStaleSessions ::::::::::::::::::::::::::::::::::::
2022-03-31 08:29:26.048 NOTIFICATION Not an InternatlAgent ::::::::::::::::startContinueLoadPlansThread:::::::::::::::
```

# うまくいかない時
__ODI MPインスタンスに接続できない場合__
OCIセキュリティ・リストとルート・テーブルの関連設定を省略しました。もしSSH/VNC接続に問題がある場合は、OCIセキュリティ・リストに入力ルール(<font color=blue>22/5901</font> Port)が追加されていることを確認してください。

__レポジトリが未作成の場合__
トラブルシューティングの時、以下のログファイルをご利用ください。
`/u01/oracle/logs/odiConfigure.log`

もし、ログに以下のようなメッセージがありましたら、レポジトリ・スキーマのパスワードがルールに満たさない可能性があります。
```
[opc@oracle-odi-inst-tpsu ~]# cat /u01/oracle/logs/odiConfigure.log
ODI Marketplace configuration started.
Invoking ADB config
ODI configuration for ADB technology
Start wallet download
Finished MP configuration
Going to start Apps

  [ERROR] Storing the MP Repo Mode fails, Hence exiting the process !!!

[opc@oracle-odi-inst-tpsu ~]#
```
詳細以下のMOSドキュメントをご参考ください。
ODI Instance Creation in MP Fails with "[ERROR] Storing the MP Repo Mode fails, Hence exiting the process !!!" ([Doc ID 2806808.1](https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=375624295110245&parent=EXTERNAL_SEARCH&sourceId=PROBLEM&id=2806808.1))

スキーマのパスワードは、<font color=blue>12桁</font>以上、かつ<font color=blue>大文字、小文字、特殊文字</font>が混在する必要があります。

以上

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[ODI On-PとODI MarketplaceとOCI Data Integrationの比較](https://qiita.com/liu-wei/items/dc527ad423fbd2f1742d)
[Autonomous DBにODIレポジトリの作成方法](https://qiita.com/liu-wei/items/9c0c24e51c382c3a2fbf)

__マニュアル__
[Using Oracle Data Integrator on Oracle Cloud Marketplace](https://docs.oracle.com/en/middleware/fusion-middleware/data-integrator/12.2.1.4/odi-marketplace/using-oracle-data-integrator-stack-oracle-cloud-marketplace.pdf)

__MOS ドキュメント__
Oracle Data Integrator on Marketplace Provisioning with Autonomous Database Fails to Create Repository ([Doc ID 2663331.1](https://support.oracle.com/knowledge/Oracle%20Cloud/2663331_1.html))

ODI on Marketplace Repository Not Created if Using Autonomous DB with Complex Admin Password ([Doc ID 2675895.1](https://support.oracle.com/knowledge/Oracle%20Cloud/2675895_1.html))

__オフィシャル・ブログ__
[Deploying Oracle Data Integrator Marketplace in a Public Subnet with Autonomous Database](https://www.ateam-oracle.com/post/deploying-oracle-data-integrator-marketplace-in-a-public-subnet-with-autonomous-database)

[Deploying Oracle Data Integrator Marketplace in a Private Subnet with Autonomous Database](https://blogs.oracle.com/ateam/post/deploying-oracle-data-integrator-marketplace-in-a-private-subnet-with-autonomous-database)