WebLogic Server for Oracle Cloud Infrastructure から Autonomous Transaction Processing へ接続してみた

前回 Gen2 Oracle Cloud(以後 OCI) に WebLogic Server for Oracle Cloud Infrastructure(以後 wls4oci) をプロビジョニングできたので、今回はこの Weblogic Server から Autonomous Transaction Processing (以後 ATP)をデータソースとして接続を試みます。

手順は以下のとおり
1. ATPを作成
2. ウォレットのダウンロードと設定
3. wls4oci 管理コンソールでデータソースを設定
4. wls4oci からのATPへの接続を確認

## 1. ATPを作成

wls4oci をプロビジョニングした大阪リージョンに同じくATPを作成します。
ATPの作成はとてもシンプルです。Oracle Cloud にサインイン後、ナビゲーションメニューから[Autonomous Transaction Processing] を選択し、Autonomous Database(ATP)を作成します。入力項目は多くはありません。
![image-20200828092753812.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/93d637b6-c881-683a-cf15-715a8c1772b3.png)
**[コンパートメント]**　適切なコンパ―tメントを選択します。
**[データベース名]**　**ATP4WLS** といれておきます。
**[ワークロード・タイプの選択]** ATP の場合、 **トランザクション処理** を選択します。
**[デプロイメント・タイプの選択]** 共有インフラを選択します。
![image-20200828094135450.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/b5651513-1fbe-7c73-d86b-55977eb1cafb.png)
続けて、
**[データベース・バージョンの選択]**　**19c** を選択
**[OCPU数]**　**１** を選択
**[ストレージ(TB)]**　**1** を選択
**[自動スケーリング]**　接続テストなのでチェックなし
さらに、管理者のユーザー名、パスワードを入力します。
![image-20200828095203040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/443d4643-b6ae-03fa-ec4e-028df9e0a87e.png)

最後に、
**[ネットワーク・アクセスの選択]**　**すべての場所からセキュア・アクセスを許可**を選択
**[ライセンス・タイプの選択]**　**ライセンス込み**を選択

以上でATP作成のための項目設定は終了です。**[Autonomous Database の作成]** をクリックするとプロビジョニングが開始されます。

![image-20200828095857222.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/a10ffd4b-93b8-34ac-cc6b-40a197992067.png)

しばらくすると、プロビジョニングが完了しATPが使用可能となります。
![image-20200828100149568.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/219af041-d08d-82ef-cc8a-f5710448dccb.png)

## 2. ウォレットのダウンロードと設定

クライアントからATPへ接続する際には、ウォレットというクライアント資格証明が必要です。ウォレットによりクライアントとATP間の相互認証やSSL暗号化によりセキュアな接続を可能とします。

### ウォレットのダウンロード

ウォレットは作成したATPのサービスページから取得します。[DB接続]をクリックすると**データベース接続** 画面が表示されます。


![image-20200828144517898.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/8c722b88-0dff-d0be-44a5-376c1d616475.png)
**[ウォレット・タイプ]** **インスタント・ウォレット** を選択
**[ウォレット・ダウンロード]** をクリックしてダウンロードを実行します。
パスワードを聞かれるので、ATP作成時に設定したパスワードを入力してダウンロードを進めます。
ATP作成時にデータベース名を ATP4WLS としたので、**Wallet_ATP4WLS.zip** というファイル名でダウンロードできました。

### ウォレットの設定
ウォレットファイル（Wallet_ATP4WLS.zip）をWebLogic管理サーバーのコンピュートインスタンスにコピーし、ファイルを展開し必要な設定をおこないます。
TeraTerm などでコンピュートインスタンスに接続します。

![image-20200828154540734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/4a35ab26-8588-35e9-db8d-49431c74b298.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/26cbedf5-004c-2832-542d-3ef53686e51b.png)　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/1856aded-9319-8bcd-425d-1038790faa26.png)

接続ターミナル内でコマンド操作により以下を実施してください。

- ウォレットファイルをコピー
- 展開後のファイルの置き場所(例えば、/shared/atp)を作成し、ファイルを展開
- ファイルのオーナー/グループを oracle に変更

こちらではこのように展開されています。

```
[opc@mywls-wls-0 atp]$ pwd
/shared/atp
[opc@mywls-wls-0 atp]$ ls -l
total 64
-rw-rw-r--. 1 oracle oracle  6733 May 27 08:37 cwallet.sso
-rw-rw-r--. 1 oracle oracle  6688 May 27 08:37 ewallet.p12
-rw-rw-r--. 1 oracle oracle  3275 May 27 08:37 keystore.jks
-rw-rw-r--. 1 oracle oracle   691 May 27 08:37 ojdbc.properties
-rw-rw-r--. 1 oracle oracle   317 May 27 08:37 README
-rw-rw-r--. 1 oracle oracle   111 May 28 05:22 sqlnet.ora
-rw-rw-r--. 1 oracle oracle  1796 May 27 08:37 tnsnames.ora
-rw-rw-r--. 1 oracle oracle  3335 May 27 08:37 truststore.jks
```

sqlnet.ora  を開いて DIRECTORY を展開したファイルの置き場所に変更します。

```
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/shared/atp")))
SSL_SERVER_DN_MATCH=yes
```

tnsname.ora を開いて内容を確認します。行の始めの接続サービス名 **atp4wls_high** は、この後のWebLogic管理サーバのデータソースの定義で使用します。

```
atp4wls_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-osaka-1.oraclecloud.com))(connect_data=(service_name=lx46kn8uks92unl_atp4wls_high.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-osaka-1.oraclecloud.com,OU=Oracle ADB OSAKA,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

atp4wls_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-osaka-1.oraclecloud.com))(connect_data=(service_name=lx46kn8uks92unl_atp4wls_low.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-osaka-1.oraclecloud.com,OU=Oracle ADB OSAKA,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

atp4wls_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-osaka-1.oraclecloud.com))(connect_data=(service_name=lx46kn8uks92unl_atp4wls_medium.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-osaka-1.oraclecloud.com,OU=Oracle ADB OSAKA,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
```

### WebLogic管理コンソールでのデータソース設定

WebLogicの管理コンソールを起動し、データソースの設定をおこないます。
![image-20200831173010146.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/be868335-abb2-87a5-bc8f-a60751aa0a5d.png)

汎用データベースを選択します。
![image-20200831173257137.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/003a63f8-597a-119b-a8e7-e809c46fa124.png)

データソース名を入力します。
![image-20200831173449689.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/a0e8fb7b-0b36-6e11-04ea-2c2907ba59cf.png)

データベース・ドライバを選択します。
![image-20200831173649229.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/3919ca41-4f14-781f-ba0e-18695921975a.png)

デフォルトのまま次へ進みます。
![image-20200831173903352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/0dcb7626-f2cd-984c-04b7-04448d7acb10.png)

ATP接続情報を入力します。
![image-20200831174040671.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/229072ae-b5cf-f237-6647-d86e3b9cde81.png)
**[ホスト名]** ホスト名は tnsname.ora 内に記述されています。
**[データベース名]** ATP4WLS を入力します。
**[ポート番号]** **1522** を使用します。1521 ではありません。

接続先データベース(ATP)のURLを指定します。
![image-20200831174312744.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/1fc39cf1-3e10-b18a-97d4-6f0b31290e3d.png)
**[URL]** JDBC.oracle.thin:@**atp4wls_high** と入力します。**atp4wls_high** は tnsname.ora で記述されている接続サービス名です。

プロパティを入力します。
![image-20200831174423290.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/c4172e0c-8c92-3a3f-78b2-8ceed600bec6.png)
ここでは簡易的に参照URLに記載の [Configuring a WebLogic Data Source to use ATP] のプロパティ値を入力しました。

データソースのターゲットを管理サーバとしてデータソースの作成を完了します。
![image-20200831174830384.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/7db35153-6dcd-3f8c-f5a1-31024cdf4313.png)

##Weblogic から ATPへの接続テスト

作成したデータソースを選択し、[モニタリング] - [テスト]から**データソースのテスト**を実行して接続を試します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/164c2cfc-30a4-510a-cbba-74d1f6d2778c.png)

ページ上部にデータソースの接続成功のメッセージが表示され、ATPへの接続確認ができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/336f420c-a497-b87f-11b2-88bb066f85e5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/12a29683-8152-1073-6256-367012ee47b7.png)

##参照URL
[ATPをWebLogicデータソースとして設定](https://scoto.hatenablog.com/entry/2019/03/24/145039)
[Configuring a WebLogic Data Source to use ATP](https://weblogic.cafe/posts/atp-datasource/)