はじめに
Oracle Analytics Cloud Classic:OACで、メタデータ・リポジトリまたはセマンティック・モデルを利用する場合、物理レイヤーで接続プールを利用し、データベースへアクセスします。
接続プールにはBI Serverとデータベース間の接続設定を記述します。どのサーバーのどのデータベースに何のDBユーザーでアクセスするかや、接続プールの最大数、接続プーリングのオン/オフ、オン時のタイムアウトなどです。
接続プールで、オン、オフにしたときの動きについて見てみました。オン、オフとは、「接続プーリングの有効化」のチェック有/無です。
前提
本記事では、動作確認の便宜上、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文を元にした物理テーブルを作成しています。"キャッシュ可能"はチェックを外し、キャッシュを利用しない設定です。
接続プールの設定です。最大接続数は2にしています。タイムアウトは3分にしています。
Answersの分析 実行時の動き オンのとき
Answersの分析実行中、DBセッションが作成されます。Statusはactiveです。
実行後もDBセッションはあります。Statusはinactiveです。
Answersの分析 実行時の動き オフのとき
接続プーリングの有効化のチェックを外して、オフのときの動きを見てみます。
また、最大接続数を超えて、処理がリクエストされたときの動きも見てみます。
Answersの分析実行中、DBセッションが作成されます。Statusはactiveです。
次に、DBリクエストが最大接続数を超えた場合について見てみます。
Answersの分析を同時に3つ実行します。#1(120秒実行)、#2(60秒実行)、#3(30秒実行)
実行された時間、セッション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
最大接続数はオフにした際も有効でした。
以上