Oracle Analytics Cloud Classic：接続プールのオンのとき、オフのときの動きを見てみる。

はじめに
---
Oracle Analytics Cloud Classic：OACで、メタデータ・リポジトリまたはセマンティック・モデルを利用する場合、物理レイヤーで接続プールを利用し、データベースへアクセスします。
接続プールにはBI Serverとデータベース間の接続設定を記述します。どのサーバーのどのデータベースに何のDBユーザーでアクセスするかや、接続プールの最大数、接続プーリングのオン/オフ、オン時のタイムアウトなどです。
接続プールで、オン、オフにしたときの動きについて見てみました。オン、オフとは、「接続プーリングの有効化」のチェック有/無です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/6e17b42b-6951-e69e-5814-abacf1ff8b20.png)

前提
---
本記事では、動作確認の便宜上、Oracle Analytics Serverの環境を利用しています。
利用したバージョン：Oracle Analytics Server ver6.4

DB処理の時間を調整するために処理時間をコントロールするdbms_session.sleepを利用した関数を用意します。データベースアクションや、SQLDeveloper、sqlplusを用いscottユーザーで以下、DBの関数を作成します。
```
create or replace function f_sessleep(v_time in number) return varchar2 
as
  p_starttime varchar2(20);
  p_endtime varchar2(20);
  p_sid number(10);
begin
  select  sys_context ('USERENV','SID') into p_sid FROM dual;
  select  to_char(sysdate,'HH24:MI:SS') into p_starttime FROM dual;
  dbms_session.sleep(v_time);
  select  to_char(sysdate,'HH24:MI:SS') into p_endtime FROM dual;
  return('SID:'||to_char(p_sid)||' = Start:'||p_starttime||' - End:'||p_endtime);
exception
  when others then
    return sqlerrm;
end;
/
```

メタデータ・リポジトリの構築、Answersの分析の作成
---
物理レイヤーで、以下、表タイプの"Select"の物理テーブルを作成し、論理レイヤー、プレゼンテーションレイヤーを作成しています。
作成したデータベースのdbms_session.sleepを利用する関数を含む、Select文を元にした物理テーブルを作成しています。"キャッシュ可能"はチェックを外し、キャッシュを利用しない設定です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/f83d0cd3-6fe2-4911-e211-c0ece51138a0.png)

接続プールの設定です。最大接続数は2にしています。タイムアウトは3分にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/a87b1b65-af33-2e12-05d5-4ba8ea77afa9.png)


Answersの分析　実行時の動き　オンのとき
---
Answersの分析実行中、DBセッションが作成されます。Statusはactiveです。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/42c2226a-a775-4724-e075-991bbc70e0a8.png)

実行終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/04fc3df2-5c7f-093c-6c22-7d3bf28eb835.png)

実行後もDBセッションはあります。Statusはinactiveです。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/31d882bc-edde-9811-9cae-5d5f5a61508a.png)

タイムアウト時間経過後、セッションはCLOSEされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/11492620-c0f3-6506-07f7-9e51d4fa4974.png)


Answersの分析　実行時の動き　オフのとき
---
接続プーリングの有効化のチェックを外して、オフのときの動きを見てみます。
また、最大接続数を超えて、処理がリクエストされたときの動きも見てみます。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/49a53b53-bdc8-f256-d3c9-604adc742bbd.png)

Answersの分析実行中、DBセッションが作成されます。Statusはactiveです。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/af0cc878-0d17-a3e9-92ef-9223d89957eb.png)

実行終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/a3ad4fba-ea64-6370-1ffe-2353ce6f663f.png)

実行後、DBセッションはCLOSEされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/dfaf4f3f-7449-8733-d807-34e86f16acbf.png)

次に、DBリクエストが最大接続数を超えた場合について見てみます。
Answersの分析を同時に３つ実行します。#1(120秒実行)、#2(60秒実行）、#3(30秒実行）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/57e02664-b4b5-0e86-f817-8984a233cd42.png)

DBセッションは、２つです。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/e9860b44-65c8-1799-2dfc-6d04bd5ad352.png)


実行された時間、セッションID（SID）は、それぞれ以下でした。#2が終了してから、#3が開始しています。
#1  SID= 53 Start 19:05:50 - End 19:07:50
#2  SID=267 Start 19:06:01 - End 19:07:01 
#3  SID= 43 Start 19:07:01 - End 19:07:31
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/3c6b313f-1d00-f2a0-4f1a-9d2119fdad05.png)

最大接続数はオフにした際も有効でした。

以上