47 DBMS_CONNECTION_POOL
DBMS_CONNECTION_POOL
パッケージは、データベース常駐接続プール(DRCP)を管理するインタフェースを提供します。
データベース初期化パラメータENABLE_PER_PDB_DRCP
は、DRCPがCDB ROOT
DRCPモードで構成されるか、PDBごとのDRCPモードで構成されるかを制御します。デフォルト値はFALSE
で、この場合DRCPがCDBレベルで構成されます。
- データベース構成パラメータ
ENABLE_PER_PDB_DRCP
の値がTRUE
に設定されている場合、次のようになります:-
各PDB管理者は、
DBMS_CONNECTION_POOL
パッケージを使用してプール構成を管理できます。ROOT
がDBMS_CONNECTION_POOL
パッケージを使用してプール構成を管理しようとすると、エラーがスローされます。 -
cpool$
表のnum_cbrok
およびmaxconn_cbrok
プール・パラメータの値は無視されます。PDB管理者は、DBMS_CONNECTION_POOL.ALTER_PARAM()
プロシージャを使用してこれらのパラメータを変更することはできません。これらのパラメータは、CONNECTION_BROKERS
データベース・パラメータを使用して設定できます。これらのパラメータを動的に変更できるのは、ROOT
のみです。
-
ENABLE_PER_PDB_DRCP
パラメータの値がFALSE
に設定されている場合、ROOT
のみがDBMS_CONNECTION_POOL
パッケージを使用してプール構成を管理できます。PDB管理者がDBMS_CONNECTION_POOL
パッケージを使用してプール構成を管理しようとすると、エラーがスローされます。- 次のDRCPパラメータには、0から
SB4MAXVAL
(2147483647) - 1の範囲の値を指定できます。minsize
num_cbrok
maxconn_cbrok
この章では、次の項目について説明します。
47.1 DBMS_CONNECTION_POOLサブプログラムの要約
次の表では、DBMS_CONNECTION_POOL
パッケージのサブプログラムをアルファベット順に示し、簡単に説明します。
表47-1 DBMS_CONNECTION_POOLパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
新しいプールを複数プールDRCPに追加します。 | |
他のパラメータに影響を与えることなく、特定の構成パラメータをスタンドアロン単位で変更します。 |
|
拡張オプションでプールを構成します。 |
|
プールを複数プールDRCPから削除します。 | |
プールをデフォルト設定に戻します |
|
操作を行うためにプールを開始します。このプロシージャをコールした後にのみ、接続クライアントでプールを使用してセッションを作成できます。 |
|
プールを停止し、登録されている接続クライアントに対してプールを使用不可にします。 |
47.1.1 ADD_POOLプロシージャ
このプロシージャを使用して、新しいDRCPプールを追加できます。
構文
DBMS_CONNECTION_POOL.ADD_POOL ( pool_name IN VARCHAR2, minsize IN PLS_INTEGER DEFAULT 0, maxsize IN PLS_INTEGER DEFAULT 40, incrsize IN PLS_INTEGER DEFAULT 2, session_cached_cursors IN PLS_INTEGER DEFAULT 20, inactivity_timeout IN PLS_INTEGER DEFAULT 300, max_think_time IN PLS_INTEGER DEFAULT 120, max_use_session IN PLS_INTEGER DEFAULT 500000, max_lifetime_session IN PLS_INTEGER DEFAULT 86400, max_txn_think_time IN PLS_INTEGER DEFAULT 0);
パラメータ
ノート:
プールの追加時にプール構成を認識している場合は、次のパラメータの値を指定できます。そうでない場合は、後でCONFIGURE_POOL
サブプログラムをコールし、新しいプール名および構成オプションを指定できます。
表47-2 ADD_POOLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
DRCPに追加するプールの名前。 |
|
プール内のプール・サーバーの最小数。デフォルト値は0です。 |
|
プールで許可されるプール・サーバーの最大数。デフォルト値は40です。 |
|
アプリケーションの要求時にプール・サーバーが使用不可になっている場合にプールに追加されるプール・サーバーの数。デフォルト値は2です。 |
|
各プール・サーバー・セッションでキャッシュするセッション・カーソルの数。デフォルト値は20です。 プールのすべての接続で |
|
プールのアイドル・セッションの |
|
プールからオープン・トランザクションが含まれていないプール・サーバーを取得した後のクライアントの最大非アクティブ時間(秒数)。クライアント・アプリケーションが、プールからプール・サーバーを取得した後、 |
|
接続を取得し、プールに解放できる最大回数。デフォルト値は500000です。 |
|
プールされたセッションの |
|
プールからオープン・トランザクションを含むプール・サーバーを取得した後のクライアントの最大非アクティブ時間(秒数)。クライアント・アプリケーションがプールからプール・サーバーを取得した後、 |
ノート:
pool_name
パラメータには、次の検証チェックがあります。
- プール名は一意である必要があります。
- 英字で始まる必要があります。
- 2番目以降の位置に英数字を含めることができます。
- 2番目以降の位置にアンダースコア(
_
)を含めることができます。 - プール名に許可される最大長は128です。
参照:
このプロシージャで構成可能なすべてのデータベース常駐接続プールのパラメータのリストおよび説明については、『Oracle Database管理者ガイド』を参照してください。例
exec dbms_connection_pool.add_pool('mypool')
47.1.2 ALTER_PARAMプロシージャ
このプロシージャは、特定のデータベース常駐接続プール(DRCP)構成パラメータをスタンドアロン単位で変更します。他のパラメータは影響を受けません。
構文
DBMS_CONNECTION_POOL.ALTER_PARAM ( pool_name IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL', param_name IN VARCHAR2, param_value IN VARCHAR2);
パラメータ
表47-3 ALTER_PARAMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
構成するプール。 |
|
ブローカ・パラメータ:
|
|
|
参照:
このプロシージャで構成可能なすべてのDRCPのパラメータのリストおよび説明については、Oracle Database管理者ガイドを参照してください。例外
表47-4 ALTER_PARAMプロシージャの例外
例外 | 説明 |
---|---|
|
接続プールが見つかりません |
|
接続プール構成パラメータ名が無効です |
|
接続プール構成パラメータ値が無効です |
|
接続プールの変更構成に失敗しました |
例
DBMS_CONNECTION_POOL.ALTER_PARAM( 'SYS_DEFAULT_CONNECTION_POOL', 'MAX_LIFETIME_SESSION', '120');
47.1.3 CONFIGURE_POOLプロシージャ
このプロシージャは、拡張オプションでプールを構成します。
構文
DBMS_CONNECTION_POOL.CONFIGURE_POOL ( pool_name IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL', minsize IN NUMBER DEFAULT 4, maxsize IN NUMBER DEFAULT 40, incrsize IN NUMBER DEFAULT 2, session_cached_cursors IN NUMBER DEFAULT 20, inactivity_timeout IN NUMBER DEFAULT 300, max_think_time IN NUMBER DEFAULT 120, max_use_session IN NUMBER DEFAULT 500000, max_lifetime_session IN NUMBER DEFAULT 86400, max_txn_think_time IN NUMBER);
パラメータ
表47-5 CONFIGURE_POOLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
構成するプール。 |
|
プール内にプールされるサーバーの最小数。 |
|
プール内にプールできるサーバーの最大数。 |
|
アプリケーションの要求時に、プールされたサーバーが使用不可になっている場合、プールを増大させるプールされたサーバーの数。 |
|
プールのすべての接続で |
|
プールのアイドル・セッションの |
|
プールからオープン・トランザクションが含まれていないプール・サーバーを取得した後のクライアントの最大非アクティブ時間(秒数)。クライアント・アプリケーションが、プールからプール・サーバーを取得した後、MAX_THINK_TIMEで指定した時間内にデータベース・コールを発行しない場合、プール・サーバーは解放されてクライアント接続が終了します。 |
|
接続を取得し、プールに解放できる最大回数。 |
|
プールされたセッションの |
|
プールからオープン・トランザクションを含むプール・サーバーを取得した後のクライアントの最大非アクティブ時間(秒数)。クライアント・アプリケーションがプールからプール・サーバーを取得した後、MAX_TXN_THINK_TIMEで指定した時間内にデータベース・コールを発行しない場合、プール・サーバーは解放されてクライアント接続が終了します。このパラメータのデフォルト値は、MAX_THINK_TIMEパラメータの値です。オープン・トランザクションを含む接続のための時間を確保するために、MAX_TXN_THINK_TIMEパラメータの値は、MAX_THINK_TIME値よりも高い値に設定できます。 |
例外
表47-6 CONFIGURE_POOLプロシージャの例外
例外 | 説明 |
---|---|
|
接続プールが見つかりません |
|
接続プールの変更構成に失敗しました |
使用上のノート
-
時間はすべて秒単位で指定します。
-
すべてのパラメータは、要求パターンの統計に基づいて設定する必要があります。
-
minsize
は、サーバー・リソースの消費に下限が設けられることを考慮して設定する必要があります。このパラメータは、非アクティブ期間が短い場合に、タイムアウトによってプールが極端に少なくなることを防ぎます。 -
maxsize
は、同時実行性、応答時間およびサーバー・リソースの消費に上限が設けられることを考慮して設定する必要があります。 -
session_cached_cursors
は、通常、最も頻繁に使用される文の数に設定されます。これにより、サーバーのカーソル・リソースが占有されます。 -
不確かな場合は、
increment
およびinactivity_timeout
は設定しないでください。プールには、適切なデフォルト値が使用されます。 -
max_use_session
およびmax_lifetime_session
は、一定期間に新しいセッションを取得することで、潜在的なバグ、リーク、蓄積、問題などに対してソフトウェアの回復または予防的アプローチを可能にします。 -
接続プールでは、プールされたサーバーの5%が認証のために保持され、少なくとも1つのプールされたサーバーが認証のために常時保持されます。
maxsize
パラメータの設定時には、認証と接続の両方に対して十分な数のプールされたサーバーがあることを確認します。
47.1.4 REMOVE_POOLプロシージャ
このプロシージャを使用して、DRCPからプールを削除できます。
構文
DBMS_CONNECTION_POOL.REMOVE_POOL ( pool_name IN VARCHAR2);
パラメータ
表47-7 REMOVE_POOLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するプール。 |
ノート:
次の場合、このプロシージャはエラーを生成します。
- 指定したプールが存在しない。
- デフォルトのプールを削除しようとした。
- アクティブなプールを停止せずに削除しようとした。
例外
表47-8 REMOVE_POOLプロシージャの例外
例外 | 説明 |
---|---|
|
プールが存在しないため、プール<pool_name>の削除に失敗しました。 |
|
データベースが読取り専用であるため、プール<pool_name>の削除に失敗しました。 |
ORA-56620 |
プールがアクティブであるため、プール<pool_name>の削除に失敗しました。 |
ORA-56620 |
プール名は空にできないため、プール<pool_name==NULL>の削除に失敗しました。 |
ORA-56620 |
デフォルトのプールは削除できないため、プールSYS_DEFAULT_CONNECTION_POOL の削除に失敗しました。
|
ノート:
エラー・メッセージは動的文字列であるため、同じエラー番号がすべての例外エラーに使用されます。
例
exec dbms_connection_pool.remove_pool('mypool')
47.1.5 RESTORE_DEFAULTSプロシージャ
このプロシージャは、プールをデフォルト設定に戻します。
構文
DBMS_CONNECTION_POOL.RESTORE_DEFAULTS ( pool_name IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL');
パラメータ
表47-9 RESTORE_DEFAULTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
戻されるプール。 |
例外
表47-10 RESTORE_DEFAULTSプロシージャの例外
例外 | 説明 |
---|---|
|
接続プールが見つかりません |
|
接続プールの変更構成に失敗しました |
47.1.6 START_POOLプロシージャ
このプロシージャは、操作を行うためにプールを開始します。これがコールされた後に、接続クラスがプールを使用してセッションを作成できます。
構文
DBMS_CONNECTION_POOL.START_POOL ( pool_name IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL');
パラメータ
表47-11 START_POOLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
開始するプール。 |
例外
表47-12 START_POOLプロシージャの例外
例外 | 説明 |
---|---|
|
接続プールが見つかりません |
|
接続プールの起動に失敗しました |
使用上のノート
インスタンスを再起動(停止後に起動)すると、DRCPプールは自動的に開始されます。
47.1.7 STOP_POOLプロシージャ
このプロシージャは、プールを停止し、登録されている接続クラスに対してプールを使用不可にします。
構文
DBMS_CONNECTION_POOL.STOP_POOL ( pool_name IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL', draintime IN PLS_INTEGER DEFAULT 2147483647);
パラメータ
表47-13 STOP_POOLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
停止するプール。 |
|
アクティブなDRCPプールは、指定した接続ドレイン時間後に閉じることも、接続がアイドル状態になるのを待たずにすぐに閉じることもできます。 draintime には、次の整数値を指定できます:
ノート: 古い動作(プールがアイドル状態で非アクティブになってからのみプールを閉じる)を保持する場合は、draintime パラメータを渡さないでください。
|
例外
表47-14 STOP_POOLプロシージャの例外
例外 | 説明 |
---|---|
|
接続プールが見つかりません |
|
接続プールの停止に失敗しました |
使用上のノート
このプロシージャにより、プールが停止しオフラインになります。プールに関連付けられた永続的なデータ(プール名、構成パラメータなど)は破損しません。