DRCP は 通常はAPサーバー側で確保するコネクションプール を
Oracle Database側で用意しておく機能やね彡(゚)(゚)
DRCPでMAXSIZEを超える同時接続要求が来た際の挙動を確認してみるんやで。
まずは DRCP の設定を変更して、開始します。
-- DRCPの最大接続数/最小接続数を1に設定
EXECUTE DBMS_CONNECTION_POOL.CONFIGURE_POOL(MINSIZE=>1, MAXSIZE=>1);
PL/SQL procedure successfully completed.
-- DRCP開始
EXECUTE DBMS_CONNECTION_POOL.START_POOL;
PL/SQL procedure successfully completed.
-- 確認
SET LINESIZE 100;
COLUMN CONNECTION_POOL FORMAT A40;
SELECT CONNECTION_POOL, STATUS, MINSIZE, MAXSIZE FROM DBA_CPOOL_INFO;
CONNECTION_POOL STATUS MINSIZE MAXSIZE
---------------------------------------- ---------------- ---------- ----------
SYS_DEFAULT_CONNECTION_POOL ACTIVE 1 1
クライアントからDRCPに接続して……(こちらはすぐ繋がります)
11:32:02 SQL> CONNECT AYSHIBAT/xxxxxxxx@127.0.0.1:11521/orcl:POOLED
接続されました。
別のクライアントからも接続します。こちらは待たされます。
そう、待たされるんだよなぁ……彡(゚)(゚)
11:32:05 SQL> CONNECT AYSHIBAT/xxxxxxxx@127.0.0.1:11521/orcl:POOLED
(待たされる)
この状態で元クライアントの接続を切断すると……
11:32:08 SQL>
11:32:37 SQL> DISCONNECT
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Productionとの
接続が切断されました。
11:32:37 SQL>
待たされていたクライアントが繋がるんやで彡(゚)(゚)
11:32:05 SQL> CONNECT AYSHIBAT/xxxxxxxx@127.0.0.1:11521/orcl:POOLED
接続されました。
11:32:37 SQL>
DRCP接続の確立が待たされると、V$CPOOL_STATSビューのNUM_WAITSがカウントされるもよう
SET LINESIZE 120;
COLUMN POOL_NAME FORMAT A40;
SELECT POOL_NAME, NUM_REQUESTS, NUM_HITS, NUM_MISSES, NUM_WAITS FROM V$CPOOL_STATS;
POOL_NAME NUM_REQUESTS NUM_HITS NUM_MISSES NUM_WAITS
---------------------------------------- ------------ ---------- ---------- ----------
SYS_DEFAULT_CONNECTION_POOL 2 0 2 1★コレ
例によってマニュアルや各種ドキュメントも見とくんやで彡(゚)(゚)
Oracle Database管理者ガイド 12cリリース2 (12.2) E72998-04
5.2 データベース常駐接続プーリングの理解
https://docs.oracle.com/cd/E82638_01/ADMIN/managing-processes.htm#GUID-BB76E57C-3F16-4C85-AEF6-BA14FC1B4777Oracle Database PL/SQLパッケージおよびタイプ・リファレンス 12c リソース2 (12.2)
E85246-03
35 DBMS_CONNECTION_POOL
https://docs.oracle.com/cd/E82638_01/ARPLS/DBMS_CONNECTION_POOL.htm#GUID-C918B806-48D1-42F6-9B2E-B3F307164873Oracle Database管理者ガイド 12cリリース2 (12.2)
E72998-04
5.4.2.1 データベース常駐接続プーリングの構成パラメータ
https://docs.oracle.com/cd/E82638_01/ADMIN/managing-processes.htm#GUID-ABBE6941-73AC-4343-B320-A1400451B44Fデータベース常駐接続プーリング(DRCP)Oracle Database 11g
テクニカル・ホワイト・ペーパー
http://www.oracle.com/technetwork/jp/topics/oracledrcp11g-132231-ja.pdf
Oracle Databaseリファレンス 12cリリース2 (12.2)
E72905-03
F バックグラウンド・プロセス
https://docs.oracle.com/cd/E82638_01/REFRN/background-processes.htm#GUID-86184690-5531-405F-AA05-BB935F57B76D
:
Lnnn
プール・サーバー・プロセス
データベース常駐接続プーリングでクライアント要求を処理する
:
Nnnn
接続ブローカ・プロセス
データベース常駐接続プーリングでアイドル状態の接続を監視し、アクティブな接続を渡す
:
こちらの資料も大変参考になります!彡(^)(^)
Oracle常駐接続プーリング(DRCP)を導入した話
https://www.slideshare.net/kenken0807/oracledrcp