Oracle Analytics Cloud：MySQL Database ServiceにRPDから接続する

# はじめに
Oracle Analytics Cloud（**OAC**）からMySQL Database Service（**MDS**）に接続する方法です。
この記事では、OACセルフサービスBI機能で直接接続するのではなく、リポジトリ（RPD）経由での接続方法を紹介します。
MDSとOACセルフサービスBI機能の連携や、MDSインスタンス作成の詳細を知りたい方は、こちらの記事が参考になります。
- [[OCI] 分析ツールOracle Analytics Cloud(OAC)からMySQL Database Service(MDS)に接続してデータをビジュアライズしてみる](https://qiita.com/cocotaro0202/items/8b9c34674bcccef53eb8)

今回テストした構成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/45a52f13-84d8-b0c8-2556-66d051dd13b1.png)

# 1. MDSインスタンスの作成
詳細は割愛し、完了しているものとします。
インスタンスの詳細画面でエンドポイントのホスト名を確認しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d06d90c0-c007-3778-cb06-4f406f5be84f.png)

# 2. OACインスタンスにPrivate Access Channel（PAC）を設定
MDSインスタンスをPrivate Subnetにデプロイしたため、OACから接続するためにはData GatewayかPACのいずれかが必要です。
今回はPACを使用することにします。

- [プライベート・アクセス・チャネル](https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acoci/manage-service-access-and-security.html#GUID-4DF3B518-2D7B-4C37-B4C8-3F35D68372F6)

:::note
PACはインスタンスタイプ（機能セット）がEnterprise Analyticsの場合のみ使用できるオプションです。
:::

OACインスタンスの詳細画面に移動し、「プライベート・アクセス・チャネル」リソースをクリックします。
「プライベート・アクセス・チャネルの構成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d0b1c48f-9216-7516-ef82-831fe9394795.png)

プライベート・アクセス・チャネルに任意の名称を付けます（例：MySQL）。
OACがパブリックエンドポイントを保つ場合は仮想クラウドネットワークとサブネットを指定し、「DNSゾーンとしての仮想クラウド・ネットワークのドメイン名」チェックボックスがオンになっていることを確認します。
OACがプライベートエンドポイントを保つ場合は、PACはプライベートエンドポイントと同じ仮想クラウドネットワークとサブネットを使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c38c8667-c2a2-7434-bae5-8a2b25eb363b.png)
「構成」ボタンをクリックし、しばらく待つとOACインスタンスに対してPACが有効になります。

# 3. RPDリポジトリの編集
RPDリポジトリを編集するために、事前にOracle Analytics Client Toolを入手しインストールを済ませておきます。
参考：[Oracle Analytics Cloud：Javaキーストアのパスワード変更](https://qiita.com/tyo38/items/d1c021be9374d21e4ef2)

## 3.1 OACのRPDリポジトリを読み込む
Oracle BI管理ツールを起動します。
「ファイル」－「開く」－「クラウド」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/0be7f972-a2e9-6bea-752a-55a68bcdf663.png)

必要なパラメータを入力し、「開く」をクリックします。
| パラメータ | 値（例） |
|:-|:-|
| ユーザー  | IDCSまたはIdentity Domainに登録されているOACの管理者ユーザー  |
| パスワード  | OAC管理者のパスワード  |
| クラウド  | bootstrap（変更しない）  |
| ホスト名  | OACのホスト名  |
| ポート番号  | 443（変更しない）  |
| SSL  | チェックする  |
| トラスト・ストア  | （変更しない）  |
| パスワード  | changeit（デフォルト値）  |
| プロキシ  | 必要に応じて設定  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/07cdf6f1-58e6-282c-b936-6b81bededc3b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/412b5209-33bc-c9aa-5ba6-fe8ef6443048.png)

## 3.2 リポジトリを編集
編集の詳細な手順は割愛しますが、重要なポイントとして接続プールの設定方法を紹介します。
物理層でデータベースを追加し、データベースタイプを「MySQL」とした場合、接続プールが使用するインターフェースはODBCとなります。
OACはManagedサービスであり、OSへのログインが許可されていないので、ODBCデータソースを自由に追加することができません。
そこで、DSNレス接続を使用することになります。
MySQLの場合の書式です。

```
DRIVER=Oracle 7.1 MySQL Wire Protocol;HOST=["host-name"];PORT=["port"];DB=["service-name"]
```

実際の例です（MDSのエンドポイントがmysql.privateregional.xxxxxx.oraclevcn.comで、DBがsampleの場合）。
```
DRIVER=Oracle 7.1 MySQL Wire Protocol;HOST=mysql.privateregional.xxxxxx.oraclevcn.com;PORT=3306;DB=sample
```

この文字列をそのまま接続プールの「データ・ソース名」に入力します。

- [データ・モデル用のデータベース接続の管理](https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acsds/connect-data-enterprise-data-models.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d0670eee-d347-ba25-d1a8-8f2af80e6d6d.png)
リポジトリ編集が完了したイメージ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/8c61bf0b-3c02-25e3-a492-ec161951dbc7.png)

## 3.3 リポジトリをアップロード
「ファイル」－「クラウド」－「公開」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ad98e72e-de59-eaf6-7f52-98278cd165c2.png)

# 4. 動作確認
## 4.1 アンサーで動作確認
作成したサブジェクト領域を使用して検索できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/2d57a2d5-244b-fa08-1c39-50bc00ba7ff3.png)

## 4.2 セルフサービスBIで動作確認
ワークブックを新規に作成し、データセットとして「サブジェクト領域」を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/4b7a9e39-32f0-ae12-88ad-6990d5f2b7f8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e987c040-c41c-dbe6-850c-4f8a86832ee4.png)
検索し、可視化できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/580b2821-cea4-1085-d3f4-f4269e793a83.png)

# 参考になる情報
- [MySQL HeatWaveでOracle Analytics Cloudサービスを使用](https://docs.oracle.com/ja/solutions/oac-with-heatwave/index.html#GUID-58248B1F-1469-4850-91CD-3A2C813F33C8)
- [OACを使ってHeatWave上のデータを分析できるハンズオンを作成しました](https://qiita.com/yyamasaki1/items/e25c3cecc93708967446)
- [MySQL Database Service、HeatWave上のデータをBIツールを使って分析/可視化する方法](https://www.mysql.com/jp/why-mysql/presentations/mysql-heatwave-and-oac-202110-doc-jp/)