0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Analytics Cloud Classic:接続プールの動きを見てみる。

Last updated at Posted at 2023-05-26

はじめに

Oracle Analytics Cloud Classic:OACで、メタデータ・リポジトリまたはセマンティック・モデルを利用する場合、物理レイヤーで接続プールを利用し、データベースへアクセスします。
接続プールにはBI Serverとデータベース間の接続設定を記述します。どのサーバーのどのデータベースに何のDBユーザーでアクセスするかや、接続プールの最大数、接続プーリングのオン/オフ、オン時のタイムアウトなどです。
接続プールの動きについて見てみました。
image.png

接続プール
image.png

前提

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

事前準備

SQLの実行時間をコントロールするためにADWにdbms_session.sleepを利用した関数を用意する
データベースアクションや、SQLDeveloper、sqlplusを用いscottユーザーで以下、関数を作成します。

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関数を利用し、10,30,60,120秒間sleepする4パターンのSelect文を元にした物理テーブルを作成しています。"キャッシュ可能"はチェックを外し、キャッシュを利用しない設定です。
image.png

Answersの分析を4つ作成します。4パターンの物理テーブルを利用するそれぞれ実行時間 10秒、30秒、60秒、120秒間の分析です。
SIDは、データベースのセッションID、Start、EndがDBでSELECT処理が開始された時間と終了した時間です。
image.png

Answersの分析 実行時の動き その1

実行時の動きを見てみます。
何もしていない状態では、セッションはありません。
※SQL Developerのツール - セッションのモニターでみています。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

60秒間実行するAnswersの分析を実行します。
image.png

セッションが1つでます。実行中のstatusはActiveです。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

60秒間実行するAnswersの分析を実行終了します。セッションIDは45です。
image.png

終了後もセッションが1つあります。statusはinactiveです。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

タイムアウト時間を経過後しばらくすると、セッションは閉じられたのか表示から消えます。
image.png

以下のような動きでした。
image.png

Answersの分析 実行時の動き その2

実行時の動きを見てみます。
10秒間実行のAnswersの分析を実行します。
image.png

実行後のセッションです。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

60秒間実行のAnswersの分析を実行します。
image.png

inactiveだった、セッションIDを再利用して、実行されています。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

実行終了後です。同じセッションIDです。
image.png

タイムアウト時間を経過後しばらくすると、セッションは閉じられたのか表示から消えます。
image.png

以下のような動きでした。
image.png

Answersの分析 実行時の動き その3

実行時の動きを見てみます。
10秒間実行のAnswersの分析と30秒間実行のAnswersの分析を同じタイミングで実行します。
image.png

セッションのを見てみます。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

inactiveのセッションがない場合、セッションが増えて2つのセッションでそれぞれ実行されました。
image.png

タイムアウト時間を経過後しばらくすると、セッションは閉じられたのか表示から消えます。
image.png

以下のような動きでした。
image.png

Answersの分析 実行時の動き inactiveのDBセッションが複数ある場合どこ使う?

コネクションプールでinactiveのDBセッションが複数ある場合どこ使う?かについて見てみます。
60秒間実行のAnswersの分析を実行。
10秒後に、30秒間実行のAnswersの分析を実行。
さらに10秒後に、10秒間実行のAnswersの分析を実行。
全てのAnswersの分析が実行終了した後、30秒間実行したブラウザで、10秒間実行のAnswersの分析を実行するときの動きを見てみます。
image.png

#1は15:05:49から15:06:49まで実行で、セッションIDが274でした。
#2は15:06:01から15:06:31まで実行で、セッションIDが40でした。
#3は15:06:11から15:06:21まで実行で、セッションIDが279でした。
image.png

終了後、3セッションがinactiveの状態です。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

#2で、10秒間実行のAnswersの分析を実行してみます。
そうすると、#1が使っていたセッションIDが274のセッションが利用されています。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

#2で、10秒間実行のAnswersの分析を実行後の結果をみてみると、#1,#2,#3で一番最後に終了した#1のDBセッションを再利用していました。
image.png

もっとも後に実行が終了したDBセッションを再利用する動きでした。
image.png

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?