Oracle Analytics CloudからのDataGatewayを介した、Azure上のSQL ServerへのFastConnect接続～後編～

#●概要
[前編][link-1]では、Azure-OCI間のインスタンス同士の接続は行ったが、後編では、OCI-LinuxにDataGatewayをインストールし、Oracle Analytics Cloud（以下OAC）との接続を作成していく。OACがサービス・ゲートウェイを経由し、Linuxインスタンス経由で動的ルーティング・ゲートウェイを通過後、Azure-Windowsサーバ上のSQL Serverまでの到達、OACでSQL Server内のデータを参照するところまでを行う。
[link-1]:https://qiita.com/k20nozawa/items/368c3c16095e0dca1e8d

- 環境情報
 - Oracle Linux 7.8
 - Windows server 2019 
 - SQL Server 2017

#●構成

- 構成イメージ
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/8840caa7-dda8-b6b5-2659-0da57a4616f0.png)



#●構築

DataGatewayはOracleで提供されているミドルウェアであり、主にオンプレ環境のクラウド移行の際などに使用される。DataGatewayをLinuxにインストールするためにGUIベースでのインストールを実行するためにX11フォワーディングの設定を行う必要がある。
まず、DataGatewayをインストールするための環境を構築していく。

###1. X11フォワーディングの設定

####1-1. X11の有効化

DataGatewayをLinuxにインストールするためにGUIベースでのインストールを実行する。
まず、X11を有効化するためにsshd_configファイルを編集する。

~~~
$ sudo su -
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
# vi /etc/ssh/sshd_config
~~~

~~~
..........
..........
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes             「no」→「yes」にする。
#X11DisplayOffset 10
X11UseLocalhost no　　　　　　　#を外し、「yes」→「no」に変更。
#PermitTTY yes
#PrintMotd yes
~~~

~~~
# systemctl restart sshd
~~~
で完了。

####1-2. X11関連のアプリケーションやライブラリのインストール

xauth, xterm, libXtstをインストールする。

~~~
# yum -y install xauth
# yum -y install xterm
# yum -y install libXtst.x86_64
~~~
####1-3. DISPLAY変数の設定

パブリックサブネットに属するvNICのプライベートIPアドレスを指定する。

~~~
$ export DISPLAY=<プライベートIP>：10.0
~~~
~~~
$ echo $DISPLAY
<プライベートIP>：10.0
~~~
と表示されればOK。

####1-4. X11サーバーの設定

X11フォワーディングを実行した際にGUIとして表示するためのソフトウェアをローカルマシンにインストールする必要がある。Mac OSでよく使用されているのがXQuartzであるが、今回はWindowsOSであるため、以下のサイトからXmingをダウンロードし、インストールする。
XQuartz : https://www.xquartz.org/
Xming : https://sourceforge.net/projects/xming/

###2. DateGatewayのインストール

以下のサイトからDataGatewayをダウンロードする。
https://www.oracle.com/middleware/technologies/oac-downloads.html
サーバに転送後、解凍し、binファイルを実行する。

~~~
$ unzip datagateway-<version>-linux.zip
$ ./datagateway-<version>-linux.bin
~~~

実行後の常時画面
↓↓↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/af9d4b65-e949-3f2a-6446-d78c531f851e.png)

インストーラーに従い、インストールする。
Agent Configuration Credentialでは、任意のUsernameとPasswordを設定するので、メモしておく。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/f35f24a6-5f59-301e-1a55-7484f71e655b.png)

インストール完了後、下記のように表示されればOK。

~~~
$ ls-l
-rwxrwxrwx. 1 opc     opc     1920690858 Sep  1 17:35 datagateway-<version>-linux.bin
-rw-r--r--. 1 opc     opc     1920840288 Sep 10 07:04 datagateway-<version>-linux.zip
drwxr-x---. 3 opc     opc             24 Oct 19 08:30 Oracle
drwxrwx---. 6 opc     opc             97 Oct 19 08:31 oraInventory
~~~

###3. OAC作成

データを可視化するためのOACインスタンスを作成する。

~~~
インスタンス名：任意の名前（ここでは、AzureConnect）
ネットワーク・アクセス：パブリック
~~~

![OAC作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/bb1f35aa-f4a4-29c0-e9f3-4fd6f26384d7.png)


###4. OACとDatagatewayとの接続

####4-1. リモートデータ接続
作成したOACとDataGatewayの認証設定を行う。OAC作成後、分析ホームページで行き、コンソールから、左上の三線をクリック、リモートデータ接続を選択し、有効化をONにする。

####4-2. Jettyの実行
Linuxサーバ上でOACに登録するためのURLを発行する。

~~~
$ cd Oracle/Middleware/Oracle_Home/domain/bin/
~bin]$ ./status.sh
****************************************************************************
******************************** Data Gateway STATUS ********************************
Data Gateway Jetty Home: /home/opc/Oracle/Middleware/Oracle_Home/jetty
Data Gateway Domain Home: /home/opc/Oracle/Middleware/Oracle_Home/domain
Data Gateway Jetty HTTP Port: 8080
Data Gateway Status: DOWN
****************************************************************************
~~~

JettyがDOWNしているので、UPさせる。

~~~
~bin]$ ./startJetty.sh
****************************************************************************
******************************** Data Gateway STATUS ********************************
Data Gateway Jetty Home: /home/opc/Oracle/Middleware/Oracle_Home/jetty
Data Gateway Domain Home: /home/opc/Oracle/Middleware/Oracle_Home/domain
Data Gateway Jetty HTTP Port: 8080
Data Gateway Status: UP
　　　URL: http://<インスタンス名>.<VCN名>.oraclevcn.com:8080/obiee/config.jsp
****************************************************************************
~~~


構成図を見てもらえばわかるが、ここで表示されているインスタンス名はパブリックサブネットのNIC名であるが、今回OACに認証させたいインスタンス名はプライベートサブネットに属するvNIC名であるため、ホスト名を変更する必要がある。

~~~
$ sudo hostnamectl set-hostname <プライベートvNIC名> --static
$ hostname
<プライベートvNIC名>
~~~
となればOK。

再度Jettyを実行する。

~~~
$ ./stopJetty.sh
$ ./startJetty.sh
~~~

表示されたURLをクリックする。
※アクセスできない場合は（ほとんどの人がそうだと思いますが）、ホスト名とグローバルIPをローカルマシンのhostsに追加してから、再度URLをクリックする。

####4-3. DataGatewayの設定
サインインを求められるので、DataGatewayインストール時に設定したUsernameとPasswordを入力する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/87bbb3cd-11bb-6d0e-bf12-e130cc65759a.png)

サインイン後、OCIコンソールのOACの詳細情報画面に行き、OACのアクセス情報のURL（https://・・・・・・・・・・.com/まで）をコピーし、DataGataway画面のURL欄に貼り付ける。

![DataGateway_making.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/28cce4e9-517e-f699-ab40-5787013ffe5a.png)

####4-4. OACの設定
OACのステータス画面の[分析ホームページ]を選択し、分析ページに遷移する。
![OAC_コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/acb98902-adef-17a4-1a4a-b0bb389863a4.png)

左上の三本線から[コンソール]をクリック。
![OAC_コンソール②.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/1269d574-462f-c231-c0bf-1adbf76de908.png)

構成と管理の[リモート・データ接続]をクリック。
![OAC_リモートデータ接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/aba9e481-104a-b651-c14f-0a2c852cd59d.png)

[データ・ゲートウェイ有効化]をオンにし、[追加]をクリックすることで以下のように公開キーの欄が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/3c20f8b7-5e5c-93a8-a116-0ba10d0abcf2.png)
公開キーのタブに生成したキーを貼り付ける。（名前、ID、ホストは自動で認識される。）
![データゲートウェイ有効化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/19c75a70-1e4a-62cf-5a3b-83671b6b25ff.png)


OKを押して完了。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/5241a621-feb6-c9d7-7dd9-72cf5894b519.png)


再びDataGatewayの画面に行き、[Test] → [Enable] → [Save]で設定完了。
![datagateway_success.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/c38ad59e-739d-03fa-77cc-04d9a107fd3d.png)


###5. Azure-Windowsサーバの設定
####5-1. SQL Serverのインストール
Azure-WindowsサーバにSQL Serverをインストールする。
なお、SQL Server2019はDataGatewayのサービス対象外であったため、ここではSQL Server2017をインストールした。
DataGatewayのサポートしているデータソース
↓↓↓
https://docs.oracle.com/en/cloud/paas/analytics-cloud/acsds/supported-data-sources.html
####5-2. FW設定
受信規則にSQL Server用の設定を作成する。

~~~
プロトコルの種類：TCP
ポート：1433
~~~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/91172dbc-35b1-6873-95dd-33ce4b3af972.png)


####5-3. データベースの作成
SQL Serverにログインし、SQL認証のユーザーを作成、データベースを作成する。

####5-4. データの格納
ここでは検証用として、オープンデータをSQL Serverに格納しました。

###6. OACとSQL Serverの接続
OAC分析コンソールから、[接続の作成]＞[SQL Server]を選択

![oac_sqlserver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/9d2c834b-57fd-0275-20f9-b045c6dc377e.png)

~~~
接続名：任意 (ここでは、OCI-Azure)
説明：任意
ホスト：Azure WindowsサーバのプライベートIPアドレス (ここでは、192.168.0.6)
ポート：1433
データベース名：作成したDB名 (ここでは、testdatabase)
ユーザ名：SQL Server認証ユーザー
パスワード：上記ユーザーのパスワード
リモートデータ接続にチェックを入れる。
~~~

![OAC-SQLserver接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/eeec2a29-b85c-c955-d59f-8ea32b5dad1b.png)



###7. データの参照
####7-1. データセットの作成
[OAC分析コンソール]＞[作成]＞[データセット]を選択する。
![oac_作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/509731c4-f55d-359b-eb01-9305086e811a.png)

作成した接続名を選択する。（ここでは、OCI-Azure）
![dataset.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/ba99c77a-ac2c-e7a6-5750-a3aa1c5edc92.png)


####7-2. データの取得

データセット作成後、事前に格納しておいたデータを選択して参照する。
![dataset_作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/bfe8db71-9ad8-b780-8c57-0b39ca06f2ef.png)


####7-3. データの可視化

サンプルとして棒グラフを作成してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755575/513eac7a-f094-4ee9-14ae-843dcc7d7fb0.png)

無事にOACからインターネットを経由せずにSQL Serverへ接続することができました。

#●参考
・X11フォワーディング : https://www.ateam-oracle.com/preparing-linux-for-oracle-remote-data-gateway

・DataGatewayに関して : https://docs.oracle.com/cloud/help/ja/analytics-cloud/ACSDS/ACSDS.pdf