DBMS_RESOURCE_MANAGERパッケージは、プラン、コンシューマ・グループおよびプラン・ディレクティブをメンテナンスします。また、プラン・スキーマへの変更内容をグループ化する方法も提供します。
|
関連項目: データベース・リソース・マネージャの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
この章では、次の項目について説明します。
セキュリティ・モデル
定数
例
実行者には、このプロシージャを実行するためのADMINISTER_RESOURCE_MANAGERシステム権限が必要です。この権限の付与および取消しを行うプロシージャは、DBMS_RESOURCE_MANAGER_PRIVSパッケージに含まれています(第86章「DBMS_RESOURCE_MANAGER_PRIVS」を参照)。
表85-1 定数: 名前およびOracle Enterprise Managerでの略称
| 定数 | 定義 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プランの利点の1つは、相互に参照できることです。プランのエントリは、コンシューマ・グループまたはサブプランのいずれかになります。次に、有効なCPUプラン・ディレクティブのセット例を示します。
これらのプラン・ディレクティブが有効で、すべてのコンシューマ・グループに実行可能なセッションが無限にある場合、MAILDBプランには使用可能なCPUリソースの30%が割り当てられ、一方、BUGDBプランにはその70%が割り当てられます。 これをさらに分割すると、POSTMANコンシューマ・グループにあるセッションは12%(30%の内の40%)の時間を実行し、ONLINEコンシューマ・グループにあるセッションは56%(70%の内の80%)の時間を実行します。表85-1に、この使用例を示します。
概念的には、アクティブなセッションはコンシューマ・グループの下にあります。つまり、セッションはリソース・コンシューマ・グループに所属し、このコンシューマ・グループは、処理するリソースの割当てを決定するためにプランが使用します。
CPUプラン・ディレクティブのマルチプラン(1つ以上のサブプランを持つプラン)定義は、各プランがそれ自体をエンティティとして所有するため、1セットのプラン・ディレクティブを持つ単一プランに縮小できません。プランまたはサブプランに割り当てられたCPU量は、アクティブ・セッションを持つコンシューマ・グループがそのプランに含まれていないかぎり、そのプラン内でのみ使用されます。したがって、この例では、BUG MAINTグループがCPU量をまったく使用しなかった場合はそのプラン内でリサイクルされるので、BUGDBプラン内のレベル1に戻ります。前述の例で、マルチプラン定義が複数のコンシューマ・グループを持つ単一プランに縮小された場合は、BUG MAINTグループで使用されていないCPU量を明示的にリサイクルする方法はありません。CPU量はグローバルにリサイクルされるので、MAILセッションにもそれを使用する機会が与えられます。
データベースのリソースは、複数のアプリケーション間の高いレベルでパーティション化でき、アプリケーション内で再パーティション化できます。アプリケーション内の指定のグループで、割り当てられたすべてのリソースが必要ない場合、そのリソースは、同じアプリケーション内でのみ再パーティション化されます。
次の例では、デフォルトのプランとコンシューマ・グループの割当て方法が使用されます。
BEGIN DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'bugdb_plan', COMMENT => 'Resource plan/method for bug users sessions'); DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'maildb_plan', COMMENT => 'Resource plan/method for mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'mydb_plan', COMMENT => 'Resource plan/method for bug and mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Bug_Online_group', COMMENT => 'Resource consumer group/method for online bug users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Bug_Batch_group', COMMENT => 'Resource consumer group/method for bug users sessions who run batch jobs'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Bug_Maintenance_group', COMMENT => 'Resource consumer group/method for users sessions who maintain the bug db'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Mail_users_group', COMMENT => 'Resource consumer group/method for mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Mail_Postman_group', COMMENT => 'Resource consumer group/method for mail postman'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Mail_Maintenance_group', COMMENT => 'Resource consumer group/method for users sessions who maintain the mail db'); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Online_group', COMMENT => 'online bug users sessions at level 1', CPU_P1 => 80, CPU_P2=> 0, PARALLEL_DEGREE_LIMIT_P1 => 8); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Batch_group', COMMENT => 'batch bug users sessions at level 1', CPU_P1 => 20, CPU_P2 => 0, PARALLEL_DEGREE_LIMIT_P1 => 2); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Maintenance_group', COMMENT => 'bug maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 100, PARALLEL_DEGREE_LIMIT_P1 => 3); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 => 100); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_Postman_group', COMMENT => 'mail postman at level 1', CPU_P1 => 40, CPU_P2 => 0, PARALLEL_DEGREE_LIMIT_P1 => 4); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_users_group', COMMENT => 'mail users sessions at level 2', CPU_P1 => 0, CPU_P2 => 80, PARALLEL_DEGREE_LIMIT_P1 => 4); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_Maintenance_group', COMMENT => 'mail maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 20, PARALLEL_DEGREE_LIMIT_P1 => 2); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 => 100); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan', GROUP_OR_SUBPLAN => 'maildb_plan', COMMENT=> 'all mail users sessions at level 1', CPU_P1 => 30); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan', GROUP_OR_SUBPLAN => 'bugdb_plan', COMMENT => 'all bug users sessions at level 1', CPU_P1 => 70); DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA(); END; -- The preceding call to VALIDATE_PENDING_AREA -- is optional, because the validation is implicitly done in SUBMIT_PENDING_AREA. BEGIN DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.CREATE_PLAN( PLAN => 'bugdb_plan', COMMENT => 'Resource plan/method for bug users sessions'); DBMS_RESOURCE_MANAGER.CREATE_PLAN( PLAN => 'maildb_plan', COMMENT => 'Resource plan/method for mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_PLAN( PLAN => 'mydb_plan', COMMENT => 'Resource plan/method for bug and mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Bug_Online_group', COMMENT => 'Resource consumer group/method for online bug users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Bug_Batch_group', COMMENT => 'Resource consumer group/method for bug users sessions who run batch jobs'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Bug_Maintenance_group', COMMENT => 'Resource consumer group/method for users sessions who maintain the bug db'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Mail_users_group', COMMENT => 'Resource consumer group/method for mail users sessions'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Mail_Postman_group', COMMENT => 'Resource consumer group/method for mail postman'); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'Mail_Maintenance_group', COMMENT => 'Resource consumer group/method for users sessions who maintain the mail db'); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Online_group', COMMENT => 'online bug users sessions at level 1', CPU_P1 => 80, CPU_P2=> 0, PARALLEL_DEGREE_LIMIT_P1 => 8); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Batch_group', COMMENT => 'batch bug users sessions at level 1', CPU_P1 => 20, CPU_P2 => 0, PARALLEL_DEGREE_LIMIT_P1 => 2); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'Bug_Maintenance_group', COMMENT => 'bug maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 100, PARALLEL_DEGREE_LIMIT_P1 => 3); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'bugdb_plan', GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 => 100); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_Postman_group', COMMENT => 'mail postman at level 1', CPU_P1 => 40, CPU_P2 => 0, PARALLEL_DEGREE_LIMIT_P1 => 4); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_users_group', COMMENT => 'mail users sessions at level 2', CPU_P1 => 0, CPU_P2 => 80, PARALLEL_DEGREE_LIMIT_P1 => 4); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'Mail_Maintenance_group', COMMENT => 'mail maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 20, PARALLEL_DEGREE_LIMIT_P1 => 2); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'maildb_plan', GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 => 100); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'mydb_plan', GROUP_OR_SUBPLAN => 'maildb_plan', COMMENT=> 'all mail users sessions at level 1', CPU_P1 => 30); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'mydb_plan', GROUP_OR_SUBPLAN => 'bugdb_plan', COMMENT => 'all bug users sessions at level 1', CPU_P1 => 70); DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA(); END; /
表85-3 DBMS_RESOURCE_MANAGERパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
リソース・マネージャに対する作業領域を消去します。 |
|
|
リソース・コンシューマ・グループを定義するエントリを作成します。 |
|
|
リソース・マネージャ・オブジェクトへの変更を行うための作業領域を作成します。 |
|
|
リソース・プランを定義するエントリを作成します。 |
|
|
リソース・プラン・ディレクティブを作成します。 |
|
|
最大8つのコンシューマ・グループが含まれた単一レベルのリソース・プランを1ステップで作成します。 |
|
|
リソース・コンシューマ・グループを定義するエントリを削除します。 |
|
|
指定のプランおよびそれが参照するすべてのプラン・ディレクティブを削除します。 |
|
|
指定のプランおよびそのすべての子(プラン・ディレクティブ、サブプラン、コンシューマ・グループ)を削除します。 |
|
|
リソース・プラン・ディレクティブを削除します。 |
|
SET_CONSUMER_GROUP_MAPPINGプロシージャ |
ログイン属性およびランタイム属性のマッピングに使用するエントリを追加、削除または変更します。 |
|
SET_CONSUMER_GROUP_MAPPING_PRIプロシージャ |
セッション属性マッピングの優先順位リストを作成します。 |
|
SET_INITIAL_CONSUMER_GROUPプロシージャ |
ユーザーに対して、初期リソース・コンシューマ・グループを割り当てます。 |
|
|
リソース・マネージャに対する保留中の変更を実行します。 |
|
SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャ |
指定のセッションのリソース・コンシューマ・グループを変更します。 |
|
SWITCH_CONSUMER_GROUP_FOR_USERプロシージャ |
指定のユーザー名で、すべてのセッションのリソース・コンシューマ・グループを変更します。 |
|
|
現行のリソース・マネージャ・プランを設定します。 |
|
|
リソース・コンシューマ・グループを定義するエントリを更新します。 |
|
|
リソース・プランを定義するエントリを更新します。 |
|
|
リソース・プラン・ディレクティブを更新します。 |
|
|
リソース・マネージャに対する保留中の変更を検証します。 |
このプロシージャによって、リソース・マネージャに対する保留中の変更内容を消去します。
構文
DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;
このプロシージャによって、リソース・コンシューマ・グループを定義するエントリを作成します。
構文
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP ( consumer_group IN VARCHAR2, comment IN VARCHAR2, cpu_mth IN VARCHAR2 DEFAULT 'ROUND-ROBIN');
パラメータ
表85-4 CREATE_CONSUMER_GROUPプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
コンシューマ・グループの名前。 |
|
|
ユーザーのコメント。 |
|
|
コンシューマ・グループ内のセッション間でCPU負荷の分散を図るためのリソース割当て方法。デフォルトは |
このプロシージャによって、リソース・マネージャ・オブジェクトに変更を加えます。
プラン・スキーマへのすべての変更は、ペンディング・エリア内で行う必要があります。ペンディング・エリアは、プラン・スキーマを変更するためのスクラッチ領域とみなすことができます。管理者は、このペンディング・エリアを作成し、必要に応じて変更を加え、場合によってその変更を検証します。その実行が完了したときのみ、その変更内容がアクティブになります。
構文
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;
使用上の注意
ペンディング・エリアがアクティブな間は、変更された現行のプラン・スキーマを適切なユーザー・ビューから選択して、いつでも表示できます。
現行の変更を中止する場合は、いつでもペンディング・エリアを消去できます。また、VALIDATEプロシージャをコールして、変更が有効になっているかどうかを確認できます。変更は、エントリ・グループの一貫性を維持するための指定の順序で行う必要はありません。これらのチェックは、ペンディング・エリアが実行されるときにも暗黙的に行われます。
|
注意: Oracleでは、孤立したコンシューマ・グループ(つまり、そのコンシューマ・グループを参照するプラン・ディレクティブがないコンシューマ・グループ)が可能です。これは、現在は使用しないが将来使用するコンシューマ・グループを管理者があらかじめ作成できるようにするためです。 |
次のルールを厳守してください。これらのルールは、VALIDATEまたはSUBMITプロシージャが実行されるたびにチェックされます。
プラン・スキーマにループがないこと。
プラン・ディレクティブが参照するすべてのプランおよびコンシューマ・グループがあること。
すべてのプランに、プランまたはコンシューマ・グループのいずれかを参照するプラン・ディレクティブがあること。
リソース割当て方法がEMPHASISの場合は、指定レベルでのパーセントの合計が100を超えないこと。
アクティブなインスタンスでトップレベルのプランとして現在使用されているプランを削除しないこと。
Oracle8iの場合、プラン・ディレクティブのパラメータparallel_degree_limit_p1は、コンシューマ・グループ(つまり、サブプランではなく)を参照するプラン・ディレクティブでのみ表示されます。
指定のプランでのプラン・ディレクティブが32を超えないこと(つまり、プランは33以上の子を持つことはできません)。
アクティブなプラン・スキーマ内のコンシューマ・グループが32を超えないこと。
プランとコンシューマ・グループは同じネームスペースを使用するため、コンシューマ・グループと同じ名前のプランがないこと。
アクティブなプラン・スキーマ内にOTHER_GROUPSに対するプラン・ディレクティブがあること。これにより、現在アクティブなプランがカバーしていないセッションにOTHER_GROUPSディレクティブが指定したリソースが割り当てられます。
VALIDATEまたはSUBMITプロシージャによるチェック時に、前述のルールのいずれかに違反していると、それを通知するエラー・メッセージが戻されます。変更して問題を修正し、VALIDATEまたはSUBMITプロシージャを再発行できます。
このプロシージャは、リソース・プランを定義するエントリを作成します。
構文
DBMS_RESOURCE_MANAGER.CREATE_PLAN (
plan IN VARCHAR2,
comment IN VARCHAR2,
cpu_mth IN VARCHAR2 DEFAULT 'EMPHASIS',
active_sess_pool_mth IN VARCHAR2 DEFAULT 'ACTIVE_SESS_POOL_ABSOLUTE',
parallel_degree_limit_mth IN VARCHAR2 DEFAULT
'PARALLEL_DEGREE_LIMIT_ABSOLUTE',
queueing_mth IN VARCHAR2 DEFAULT 'FIFO_TIMEOUT',);
パラメータ
表85-5 CREATE_PLANプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソース・プランの名前。 |
|
|
ユーザーのコメント。 |
|
|
コンシューマ・グループやサブ・プランがそれぞれ使用するCPU量を指定するためのリソース割当て方法。デフォルトの方法は |
|
|
アクティブ・セッション・プールのリソース割当て方法。アクティブなセッションの数を制限します。他のセッションはすべて非アクティブになり、アクティブ化されるまでキューで待機します。デフォルトの |
|
|
任意の操作の並列度に制限を指定するためのリソース割当て方法。デフォルトの |
|
|
キューイングのリソース割当て方法。キュー内で実行待ちになっている非アクティブなセッションを実行する順序を制御します。デフォルトの |
使用上の注意
デフォルトのリソース割当て方法を使用する場合は、プランの作成または更新時に方法を指定する必要はありません。
このプロシージャによって、リソース・プラン・ディレクティブを作成します。
構文
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
plan IN VARCHAR2,
group_or_subplan IN VARCHAR2,
comment IN VARCHAR2,
cpu_p1 IN NUMBER DEFAULT NULL,
cpu_p2 IN NUMBER DEFAULT NULL,
cpu_p3 IN NUMBER DEFAULT NULL,
cpu_p4 IN NUMBER DEFAULT NULL,
cpu_p5 IN NUMBER DEFAULT NULL,
cpu_p6 IN NUMBER DEFAULT NULL,
cpu_p7 IN NUMBER DEFAULT NULL,
cpu_p8 IN NUMBER DEFAULT NULL,
active_sess_pool_p1 IN NUMBER DEFAULT NULL,
queueing_p1 IN NUMBER DEFAULT NULL,
parallel_degree_limit_p1 IN NUMBER DEFAULT NULL,
switch_group IN VARCHAR2 DEFAULT NULL,
switch_time IN NUMBER DEFAULT NULL,
switch_estimate IN BOOLEAN DEFAULT FALSE,
max_est_exec_time IN NUMBER DEFAULT NULL,
undo_pool IN NUMBER DEFAULT NULL,
max_idle_time IN NUMBER DEFAULT NULL,
max_idle_blocker_time IN NUMBER DEFAULT NULL,
switch_time_in_call IN NUMBER DEFAULT NULL);
パラメータ
表85-6 CREATE_PLAN_DIRECTIVEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソース・プランの名前。 |
|
|
コンシューマ・グループの名前またはサブプランの名前。 |
|
|
プラン・ディレクティブについてのコメント。 |
|
|
CPUリソース割当て方法が |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
コンシューマ・グループに対するアクティブな同時セッションの最大数を指定します。デフォルトの |
|
|
非アクティブ・セッション・キューにあるジョブ(実行待ち状態のジョブ)がタイムアウトする時間(秒)を指定します。デフォルトの |
|
|
任意の操作の並列度を制限します。デフォルトの |
|
|
他の切替え基準に達した場合に、現行セッションの切替え先となるコンシューマ・グループを指定します。デフォルトは |
|
|
アクションの実行前にセッションを実行できる時間(秒)を指定します。デフォルトの |
|
|
|
|
|
セッションに許可する実行時間(秒)の最大値を指定します。操作時間が |
|
|
コンシューマ・グループによって生成される取消しの合計量の最大値を、キロバイト( |
|
|
セッションのアイドル時間の最大値を示します。デフォルトの |
|
|
別のセッションのリソース取得をブロックしながら、セッションのアイドル状態を維持できる時間(秒)の最大値。 |
|
|
アクションの実行前にセッションを実行できる時間(秒)を指定します。最初のコールの終了時に、セッションのコンシューマ・グループは元のコンシューマ・グループにリストアされます。デフォルトの |
使用上の注意
すべてのパラメータは、NULLにデフォルト設定されます。ただし、CPUリソース割当て方法がEMPHASISの場合は、ユーザーがすべてのパラメータを入力する必要があります。
max_idle_timeおよびmax_idle_blocker_timeに指定された制限値については、PMONが1分に1回確認します。いずれかの制限を超過したセッションが見つかると、そのセッションは強制終了され、すべての状態がクリーン・アップされます。
中間層サーバーによるセッション・プーリングの実装が行われている場合の3層アプリケーションでは、ほとんどの場合、パラメータswitch_time_in_callは有用です。switch_time_in_callを使用した場合のクライアントのリソース使用率は、今後別のクライアントが偶然同じセッションで実行されても影響しません。
このプロシージャでは、最大8つのコンシューマ・グループが含まれた単一レベルのリソース・プランを1ステップで作成します。リソース・プランの作成前にペンディング・エリアを手動で作成したり、CREATE_CONSUMER_GROUPプロシージャおよびCREATE_RESOURCE_PLAN_DIRECTIVESプロシージャを個別に使用する必要がありません。
構文
DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN ( SIMPLE_PLAN IN VARCHAR2 DEFAULT, CONSUMER_GROUP1 IN VARCHAR2 DEFAULT, GROUP1_CPU IN NUMBER DEFAULT, CONSUMER_GROUP2 IN VARCHAR2 DEFAULT, GROUP2_CPU IN NUMBER DEFAULT, CONSUMER_GROUP3 IN VARCHAR2 DEFAULT, GROUP3_CPU IN NUMBER DEFAULT, CONSUMER_GROUP4 IN VARCHAR2 DEFAULT, GROUP4_CPU IN NUMBER DEFAULT, CONSUMER_GROUP5 IN VARCHAR2 DEFAULT, GROUP5_CPU IN NUMBER DEFAULT, CONSUMER_GROUP6 IN VARCHAR2 DEFAULT, GROUP6_CPU IN NUMBER DEFAULT, CONSUMER_GROUP7 IN VARCHAR2 DEFAULT, GROUP7_CPU IN NUMBER DEFAULT, CONSUMER_GROUP8 IN VARCHAR2 DEFAULT, GROUP8_CPU IN NUMBER DEFAULT);
このプロシージャによって、リソース・コンシューマ・グループを定義するエントリを削除します。
構文
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP ( consumer_group IN VARCHAR2);
パラメータ
このプロシージャは、指定のプランおよびそれが参照するすべてのプラン・ディレクティブを削除します。
構文
DBMS_RESOURCE_MANAGER.DELETE_PLAN ( plan IN VARCHAR2);
パラメータ
このプロシージャは、指定のプランおよびそのすべての子(プラン・ディレクティブ、サブプラン、コンシューマ・グループ)を削除します。必須オブジェクトおよび必須ディレクティブは削除されません。
構文
DBMS_RESOURCE_MANAGER.DELETE_PLAN_CASCADE ( plan IN VARCHAR2);
パラメータ
使用上の注意
DELETE_PLAN_CASCADEプロシージャでエラーが発生した場合は、ロールバックされるため、何も削除されません。
このプロシージャによって、リソース・プラン・ディレクティブを削除します。
構文
DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE ( plan IN VARCHAR2, group_or_subplan IN VARCHAR2);
パラメータ
表85-10 DELETE_PLAN_DIRECTIVEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソース・プランの名前。 |
|
|
グループの名前またはサブプランの名前。 |
このプロシージャは、セッションのログイン属性およびランタイム属性に基づいて、セッションをコンシューマ・グループにマップするエントリを追加、削除または変更します。
構文
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING( attribute IN VARCHAR2, value IN VARCHAR2, consumer_group IN VARCHAR2 DEFAULT NULL);
パラメータ
表85-11 SET_CONSUMER_GROUP_MAPPINGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
追加または変更するマッピング属性。リストされている定数のいずれかを指定します。 |
|
|
一致させる属性値。 |
|
|
マップされたコンシューマ・グループの名前。マッピングを削除する場合は |
使用上の注意
指定された属性および値に対するマッピングが存在しない場合は、指定されたコンシューマ・グループへのマッピングが作成されます。指定された属性および値に対するマッピングがすでに存在する場合、マッピング先のコンシューマ・グループは、指定された属性および値を持つコンシューマ・グループに更新されます。consumer_group引数がNULLの場合は、指定された属性および値からのマッピングがすべて削除されます。
1つのセッションが持つ複数の属性を使用して、セッションをコンシューマ・グループにマップできます。このプロシージャでは、属性のマッピングにおける優先順位を指定します。
構文
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI( explicit IN NUMBER, oracle_user IN NUMBER, service_name IN NUMBER, client_os_user IN NUMBER, client_program IN NUMBER, client_machine IN NUMBER, module_name IN NUMBER, module_name_action IN NUMBER, service_module IN NUMBER, service_module_action IN NUMBER);
パラメータ
表85-12 SET_CONSUMER_GROUP_MAPPING_PRIプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
明示的マッピングの優先順位。 |
|
|
Oracleユーザー名のマッピングの優先順位。 |
|
|
クライアント・サービス名のマッピングの優先順位。 |
|
|
クライアント・オペレーティング・システムのユーザー名のマッピングの優先順位。 |
|
|
クライアント・プログラムのマッピングの優先順位。 |
|
|
クライアント・マシンのマッピングの優先順位。 |
|
|
アプリケーション・モジュール名のマッピングの優先順位。 |
|
|
アプリケーション・モジュール名およびアプリケーション・アクションのマッピングの優先順位。 |
|
|
サービス名およびアプリケーション・モジュール名のマッピングの優先順位。 |
|
|
サービス名、アプリケーション・モジュール名およびアプリケーション・アクションのマッピングの優先順位。 |
使用上の注意
このプロシージャには、引数として擬似属性explicitを含める必要があります。値は、1に設定する必要があります。これは、コンシューマ・グループの明示的な切替えが最も高い優先順位であることを示します。コンシューマ・グループの明示的な切替えは、次のパッケージ・プロシージャを使用して実行します。
DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER
優先順位を指定する値は、それぞれ1から10の一意の整数にしてください。優先順位1から10を使用する場合、優先順位が最も高いのは1、最も低いのは10です。
ユーザーの初期コンシューマ・グループは、そのユーザーが作成したセッションが最初に所属しているコンシューマ・グループです。このプロシージャは、ユーザーに対して、初期のリソース・コンシューマ・グループを設定します。
構文
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP ( user IN VARCHAR2, consumer_group IN VARCHAR2);
パラメータ
表85-13 SET_INITIAL_CONSUMER_GROUPプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーの名前。 |
|
|
ユーザーの初期コンシューマ・グループ。 |
使用上の注意
このプロシージャを実行するためには、ADMINISTER_RESOURCE_MANAGERまたはALTER USERシステム権限が必要です。ユーザーの初期コンシューマ・グループが設定される前に、ユーザーまたはPUBLICに対して、コンシューマ・グループへの切替え権限が直接付与されている必要があります。初期コンシューマ・グループに対する切替え権限は、そのユーザーに付与されているロールから与えることはできません。
|
注意: この方法は、ALTER USER DEFAULT ROLEに対する方法に類似しています。 |
ユーザーの初期コンシューマ・グループが設定されていない場合は、自動的にDEFAULT_CONSUMER_GROUPがコンシューマ・グループになります。
DEFAULT_CONSUMER_GROUPはPUBLICに付与された切替え権限を持つため、すべてのユーザーはこのコンシューマ・グループに対する切替え権限を自動的に付与されます。コンシューマ・グループを削除するとき、削除するグループを初期コンシューマ・グループとしていたすべてのユーザーは、DEFAULT_CONSUMER_GROUPを初期コンシューマ・グループとします。削除するコンシューマ・グループに所属している現行のアクティブなセッションは、すべてDEFAULT_CONSUMER_GROUPに切り替えられます。
このプロシージャによって、リソース・マネージャに対する保留中の変更を発行します。変更内容を検証してコミットした後(その変更内容が有効な場合)、ペンディング・エリアを消去します。
|
注意: SUBMIT_PENDING_AREAへのコールは、VALIDATE_PENDING_AREAが成功していても失敗する場合があります。これは、VALIDATE_PENDING_AREAをコールした後に、削除中のプランがインスタンスによってSUBMIT_PENDING_AREAをコールするまでにロードされてしまうことが原因です。 |
構文
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;
このプロシージャによって、指定のセッションのリソース・コンシューマ・グループを変更します。また、トップレベルのユーザー・セッションに関連する(PQ)スレーブ・セッションのコンシューマ・グループも変更します。
構文
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS ( session_id IN NUMBER, session_serial IN NUMBER, consumer_group IN VARCHAR2);
パラメータ
表85-14 SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ビュー |
|
|
ビュー |
|
|
切り替えるコンシューマ・グループの名前。 |
このプロシージャによって、指定のユーザーIDを持つすべてのセッションに対するリソース・コンシューマ・グループを変更します。また、トップレベルのユーザー・セッションに関連する(PQ)スレーブ・セッションのコンシューマ・グループも変更します。
構文
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER ( user IN VARCHAR2, consumer_group IN VARCHAR2);
パラメータ
表85-15 SWITCH_CONSUMER_GROUP_FOR_USERプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーの名前。 |
|
|
切り替えるコンシューマ・グループの名前。 |
使用上の注意
SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャおよびSWITCH_CONSUMER_GROUP_FOR_USERプロシージャによって、特定のセッションまたはユーザーのCPUリソース割当てを増減できます。これにより、UNIXのniceコマンドと類似した機能性が提供されます。
これらのプロシージャは、新規に指定されたコンシューマ・グループにセッションを即時に移動します。
このプロシージャは、現行のリソース・マネージャ・プランを設定します。
構文
DBMS_RESOURCE_MANAGER.SWITCH_PLAN( plan_name IN VARCHAR2, sid IN VARCHAR2 DEFAULT '*', allow_scheduler_plan_switches IN BOOLEAN DEFAULT TRUE);
パラメータ
表85-16 SWITCH_PLANプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
切替え先となるプランの名前。 |
|
|
|
|
|
|
このプロシージャによって、リソース・コンシューマ・グループを定義するエントリを更新します。
構文
DBMS_RESOURCE_MANAGER.UPDATE_CONSUMER_GROUP ( consumer_group IN VARCHAR2, new_comment IN VARCHAR2 DEFAULT NULL, new_cpu_mth IN VARCHAR2 DEFAULT NULL);
パラメータ
表85-17 UPDATE_CONSUMER_GROUPプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
コンシューマ・グループの名前。 |
|
|
新しいユーザーのコメント。 |
|
|
CPUリソース割当てに対する新規の方法名。 |
使用上の注意
UPDATE_CONSUMER_GROUPに対するパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内で変更されないまま残ります。
このプロシージャは、リソース・プランを定義するエントリを更新します。
構文
DBMS_RESOURCE_MANAGER.UPDATE_PLAN ( plan IN VARCHAR2, new_comment IN VARCHAR2 DEFAULT NULL, new_cpu_mth IN VARCHAR2 DEFAULT NULL, new_active_sess_pool_mth IN VARCHAR2 DEFAULT NULL, new_parallel_degree_limit_mth IN VARCHAR2 DEFAULT NULL, new_queueing_mth IN VARCHAR2 DEFAULT NULL);
パラメータ
表85-18 UPDATE_PLANプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソース・プランの名前。 |
|
|
新しいユーザーのコメント。 |
|
|
CPUリソースに対する新規の割当て方法の名前。 |
|
|
アクティブな最大セッションに対する新規の方法名。 |
|
|
並列度に対する新規の方法名。 |
|
|
アクティブなセッションのプール機能で使用するキューイング・ポリシーのタイプを指定します。 |
使用上の注意
UPDATE_PLANプロシージャに対するパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内に変更されないまま残ります。
デフォルトのリソース割当て方法を使用する場合は、プランの作成または更新時に方法を指定する必要はありません。
このプロシージャによって、リソース・プラン・ディレクティブを更新します。
構文
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE ( plan IN VARCHAR2, group_or_subplan IN VARCHAR2, new_comment IN VARCHAR2 DEFAULT NULL, new_cpu_p1 IN NUMBER DEFAULT NULL, new_cpu_p2 IN NUMBER DEFAULT NULL, new_cpu_p3 IN NUMBER DEFAULT NULL, new_cpu_p4 IN NUMBER DEFAULT NULL, new_cpu_p5 IN NUMBER DEFAULT NULL, new_cpu_p6 IN NUMBER DEFAULT NULL, new_cpu_p7 IN NUMBER DEFAULT NULL, new_cpu_p8 IN NUMBER DEFAULT NULL, new_active_sess_pool_p1 IN NUMBER DEFAULT NULL, new_queueing_p1 IN NUMBER DEFAULT NULL, new_parallel_degree_limit_p1 IN NUMBER DEFAULT NULL, new_switch_group IN VARCHAR2 DEFAULT NULL, new_switch_time IN NUMBER DEFAULT NULL, new_switch_estimate IN BOOLEAN DEFAULT FALSE, new_max_est_exec_time IN NUMBER DEFAULT NULL, new_undo_pool IN NUMBER DEFAULT NULL, new_max_idle_time IN NUMBER DEFAULT NULL, new_max_idle_blocker_time IN NUMBER DEFAULT NULL, new_switch_time_in_call IN NUMBER DEFAULT NULL);
パラメータ
表85-19 UPDATE_PLAN_DIRECTIVEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソース・プランの名前。 |
|
|
コンシューマ・グループの名前またはサブプランの名前。 |
|
|
プラン・ディレクティブについてのコメント。 |
|
|
CPUリソース割当て方法が |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
コンシューマ・グループに対するアクティブな同時セッションの最大数を指定します。デフォルトの |
|
|
非アクティブ・セッション・キューにあるジョブ(実行待ち状態のジョブ)がタイムアウトする時間(秒)を指定します。デフォルトの |
|
|
任意の操作の並列度を制限します。デフォルトの |
|
|
他の切替え基準に達した場合に、現行セッションの切替え先となるコンシューマ・グループを指定します。デフォルトは |
|
|
アクションの実行前にセッションを実行できる時間(秒)を指定します。デフォルトの |
|
|
|
|
|
セッションに許可する実行時間(秒)の最大値を指定します。操作時間が |
|
|
コンシューマ・グループによって生成される取消しの合計量の最大値を、キロバイト( |
|
|
セッションのアイドル時間の最大値を示します。デフォルトの |
|
|
別のセッションのリソース取得をブロックしながら、セッションのアイドル状態を維持できる時間(秒)の最大値。 |
|
|
アクションの実行前にセッションを実行できる時間(秒)を指定します。最初のコールの終了時に、セッションのコンシューマ・グループは元のコンシューマ・グループにリストアされます。デフォルトの |
使用上の注意
UPDATE_PLAN_DIRECTIVEに対してパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内で変更されないまま残ります。
new_max_idle_timeおよびnew_max_idle_blocker_timeに指定された制限値については、PMONが1分に1回確認します。いずれかの制限を超過したセッションが見つかると、そのセッションは強制終了され、すべての状態がクリーン・アップされます。
中間層サーバーによるセッション・プーリングの実装が行われている場合の3層アプリケーションでは、ほとんどの場合、パラメータnew_switch_time_in_callは有用です。new_switch_time_in_callをオンに設定した場合のクライアントのリソース使用率は、今後別のクライアントのコンシューマ・グループが偶然同じセッションで実行されても影響しません。
このプロシージャによって、リソース・マネージャに対する保留中の変更内容を検証します。
構文
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;