リソース・マネージャの管理
リソース・マネージャの管理用パッケージ
管理権限
- データベース・リソース・マネージャを管理するには、システム権限ADMINISTER_RESOURCE_MANAGERが必要である。
- 通常、データベース管理者(DBA)は、DBAロール(またはそれと等価のロール)の一部として、ADMINオプション付きでこの権限を持っている。
- ADMINオプションを持つ管理者は、必要に応じて管理権限を他のユーザーまたはロールに付与できる。
- DBMS_RESOURCE_MANAGER_PRIVSを使用して管理権限を他のユーザーまたはロールに付与できる。
DBMS_RESOURCE_MANAGER_PRIVSの仕様
プロシージャ | 説明 |
---|---|
GRANT_SYSTEM_PRIVILEGE | ユーザーまたはロールに、ADMINISTER_RESOURCE_MANAGERシステム権限を付与する。 |
REVOKE_SYSTEM_PRIVILEGE | ユーザーまたはロールから、ADMINISTER_RESOURCE_MANAGERシステム権限を取り消す。 |
GRANT_SWITCH_CONSUMER_GROUP | ユーザー、ロールまたはPUBLICに、指定したリソース・コンシューマ・グループに切り替える許可を付与する。 |
REVOKE_SWITCH_CONSUMER_GROUP | ユーザー、ロールまたはPUBLICから、指定したリソース・コンシューマ・グループに切り替える許可を取り消す。 |
EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE -
(GRANTEE_NAME => 'scott', PRIVILEGE_NAME => 'ADMINISTER_RESOURCE_MANAGER', -
ADMIN_OPTION => FALSE);
DBMS_RESOURCE_MANAGERパッケージ
プロシージャ | 説明 |
---|---|
CREATE_SIMPLE_PLAN | 最大8個のコンシューマ・グループを含む単純なリソース・プランを1ステップで作成する。 |
CREATE_PLAN | リソース・プランを作成し、その割当て方法を指定する。 |
UPDATE_PLAN | リソース・プランを更新する。 |
DELETE_PLAN | リソース・プランとそのディレクティブを削除 |
DELETE_PLAN_CASCADE | リソース・プランとそのすべての子を削除 |
CREATE_CONSUMER_GROUP | リソース・コンシューマ・グループを作成 |
UPDATE_CONSUMER_GROUP | コンシューマ・グループを更新 |
DELETE_CONSUMER_GROUP | コンシューマ・グループを削除 |
CREATE_PLAN_DIRECTIVE | プラン内のリソース・コンシューマ・グループまたはサブプランにリソースを割り当てるリソース・プラン・ディレクティブを指定 |
UPDATE_PLAN_DIRECTIVE | プラン・ディレクティブを更新 |
DELETE_PLAN_DIRECTIVE | プラン・ディレクティブを削除 |
CREATE_PENDING_AREA | プラン・スキーマを変更できるペンディング・エリア(スクラッチ領域)を作成 |
VALIDATE_PENDING_AREA | プラン・スキーマに対する保留中の変更の妥当性をチェック |
CLEAR_PENDING_AREA | 保留中のすべての変更をペンディング・エリアから消去する |
SUBMIT_PENDING_AREA | プラン・スキーマに対してすべての変更を発行 |
SET_INITIAL_CONSUMER_GROUP | このプロシージャは廃止された。SET_CONSUMER_GROUP_MAPPINGプロシージャの使用を薦める |
SWITCH_CONSUMER_GROUP_FOR_SESS | 特定セッションのコンシューマ・グループを切り替える |
SWITCH_CONSUMER_GROUP_FOR_USER | 特定ユーザーに属しているすべてのセッションのコンシューマ・グループを切り替える |
SET_CONSUMER_GROUP_MAPPING | セッションをコンシューマ・グループにマッピングする |
SET_CONSUMER_GROUP_MAPPING_PRI | セッション属性のマッピングの優先順位を設定する |
リソース・マネージャの管理
作成要件
リソースプラン:MY_PLAN
グループ | CPU割当て | アクティブ・セッション・プール | 自動切替え | 最大見積り実行時間 | UNDOプール |
---|---|---|---|---|---|
OLTP_GRP | レベル1:80% | - | 切替え先:batch 時間:3 短い問合せ:TRUE | - | サイズ: 200KB |
BATCH_GRP | レベル2:100% | 5,タイムアウト: 600 | - | - | - |
OTHER_GROUPS | レベル3:100% | - | - | - | - |
ペンディング・エリアの管理
プラン・スキーマを作成または変更する場合は、最初にペンディング・エリアを作成する必要がある。これは、段階的な変更を加え、アクティブにする前に妥当性をチェックできるスクラッチ領域である。
ペンディング・エリアの作成
EXEC DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;
変更の妥当性チェック
EXEC DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;
変更の発行
EXEC DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;
ペンディング・エリアの消去
EXEC DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;
リソース・プランの管理
プランの作成
EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN( -
PLAN => 'MY_PLAN', -
COMMENT => 'Resource plan/method for My Database', -
CPU_MTH => 'EMPHASIS' -
);
CPU_MTH
- デフォルトの方法EMPHASISは、コンシューマ・グループ間でのCPUの分配方法の指定にパーセンテージを使用する複数レベルのプラン用である。
- RATIOは、CPUの分配方法の指定に割合を使用する単一レベルのプラン用である。
プランの更新
EXEC DBMS_RESOURCE_MANAGER.UPDATE_PLAN(PLAN => 'MY_PLAN',NEW_COMMENT => NULL);
プランの削除
EXEC DBMS_RESOURCE_MANAGER.DELETE_PLAN(PLAN => 'MY_PLAN');
リソース・コンシューマ・グループの管理
常にデータ・ディクショナリ内に存在する2つの特別なコンシューマ・グループがあり、このグループは変更または削除できない。
- DEFAULT_CONSUMER_GROUP
- OTHER_GROUPS
コンシューマ・グループの作成
EXEC DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'OLTP_GRP', COMMENT => '', CPU_MTH => 'ROUND-ROBIN');
CPU_MTH
- デフォルトはROUND-ROBINで、ラウンドロビン・スケジューラを使用して、セッションの適切な実行を保証する。
- RUN-TO-COMPLETIONでは、最大のアクティブ時間のセッションを他のセッションより先にスケジュールすることを指定する。
コンシューマ・グループの更新
EXEC DBMS_RESOURCE_MANAGER.UPDATE_CONSUMER_GROUP(CONSUMER_GROUP => 'OLTP_GRP', NEW_CPU_MTH => 'RUN-TO-COMPLETION');
コンシューマ・グループの削除
EXEC DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP(CONSUMER_GROUP => 'OLTP_GRP');
リソース・プラン・ディレクティブの管理
リソース・プラン・ディレクティブの作成
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN => 'MY_PLAN',
GROUP_OR_SUBPLAN => 'OLTP_GRP',
COMMENT => '',
CPU_P1 => 80, CPU_P2 => NULL, CPU_P3 => 100, CPU_P4 => NULL,
CPU_P5 => NULL, CPU_P6 => NULL, CPU_P7 => NULL, CPU_P8 => NULL,
PARALLEL_DEGREE_LIMIT_P1 => NULL,
ACTIVE_SESS_POOL_P1 => 10,
QUEUEING_P1 => 600,
SWITCH_GROUP => 'BATCH_GRP',
SWITCH_TIME => 3,
SWITCH_ESTIMATE => TRUE,
MAX_EST_EXEC_TIME => NULL,
UNDO_POOL => 200,
MAX_IDLE_TIME => NULL,
MAX_IDLE_BLOCKER_TIME => NULL,
SWITCH_TIME_IN_CALL => NULL
);
END;
リソース・プラン・ディレクティブの更新
EXEC DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(PLAN => 'MY_PLAN',GROUP_OR_SUBPLAN => 'OLTP_GRP',NEW_CPU_P1 => 75);
リソース・プラン・ディレクティブの更新
EXEC DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE(PLAN => 'MY_PLAN',GROUP_OR_SUBPLAN => 'OLTP_GRP');
コンシューマ・グループとセッションのマッピング
セッションのマッピングは、セッションとコンシューマ・グループとの一致方法を決定する、属性とコンシューマ・グループとの組合せのセットで構成される。
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPINGプロシージャの属性
属性 | タイプ | 説明 |
---|---|---|
ORACLE_USER | ログイン | Oracle Databaseユーザー名。 |
SERVICE_NAME | ログイン | クライアントによって接続の確立に使用されたサービス名。 |
CLIENT_OS_USER | ログイン | ログインしているクライアントのオペレーティング・システム・ユーザー名。 |
CLIENT_PROGRAM | ログイン | サーバーへのログインに使用されるクライアント・プログラム名。 |
CLIENT_MACHINE | ログイン | クライアントが接続に使用しているマシン名。 |
MODULE_NAME | ランタイム | 現在実行されているアプリケーション内のモジュール名。 |
MODULE_NAME_ACTION | ランタイム | 現行モジュールと処理の組み合わせ。 |
SERVICE_MODULE | ランタイム | サービス名およびモジュール名の組合せ。 |
SERVICE_MODULE_ACTION | ランタイム | サービス名、モジュール名および処理名の組合せ。 |
コンシューマ・グループとセッションのマッピング設定
BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
ATTRIBUTE => DBMS_RESOURCE_MANAGER.ORACLE_USER,
VALUE => 'TOM',
CONSUMER_GROUP => 'OLTP_GRP');
END;
属性マッピングの優先順位の作成
BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
EXPLICIT => 1,
SERVICE_MODULE_ACTION => 2,
SERVICE_MODULE => 3,
MODULE_NAME_ACTION => 4,
MODULE_NAME => 5,
SERVICE_NAME => 6,
ORACLE_USER => 7,
CLIENT_PROGRAM => 8,
CLIENT_OS_USER => 9,
CLIENT_MACHINE => 10);
END;
作成要件に従ってMY_PLANの作成
BEGIN
DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'MY_PLAN', COMMENT => NULL);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'OLTP_GRP', COMMENT => NULL);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'BATCH_GRP', COMMENT => NULL);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN => 'MY_PLAN',
GROUP_OR_SUBPLAN => 'OLTP_GRP', COMMENT => NULL, CPU_P1 => 80,
SWITCH_GROUP => 'BATCH_GRP', SWITCH_TIME => 3,SWITCH_ESTIMATE => TRUE,
UNDO_POOL => 200
);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'MY_PLAN',
GROUP_OR_SUBPLAN => 'BATCH_GRP', COMMENT => NULL, CPU_P2 => 100,
ACTIVE_SESS_POOL_P1 => 5, QUEUEING_P1 => 600,
MAX_EST_EXEC_TIME => 3600);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'MY_PLAN',
GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => NULL, CPU_P3 => 100);
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
EXPLICIT => 1,
SERVICE_MODULE_ACTION => 2,
SERVICE_MODULE => 3,
MODULE_NAME_ACTION => 4,
MODULE_NAME => 5,
SERVICE_NAME => 6,
ORACLE_USER => 7,
CLIENT_PROGRAM => 8,
CLIENT_OS_USER => 9,
CLIENT_MACHINE => 10);
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
ATTRIBUTE => DBMS_RESOURCE_MANAGER.ORACLE_USER,
VALUE => 'TOM',
CONSUMER_GROUP => 'OLTP_GRP');
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
ATTRIBUTE => DBMS_RESOURCE_MANAGER.ORACLE_USER,
VALUE => 'BAT',
CONSUMER_GROUP => 'BATCH_GRP');
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'TOM',
CONSUMER_GROUP => 'OLTP_GRP',
GRANT_OPTION => FALSE
);
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'BAT',
CONSUMER_GROUP => 'BATCH_GRP',
GRANT_OPTION => FALSE
);
DBMS_RESOURCE_MANAGER.SWITCH_PLAN('MY_PLAN');
END;
リソース・マネージャの使用可能化
データベース・リソース・マネージャを使用可能にするには、RESOURCE_MANAGER_PLAN初期化パラメータを設定する。
ALTER SYSTEM句
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='MY_PLAN' SCOPE=BOTH;
リソース・マネージャを解除する
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='' SCOPE=BOTH;
DBMS_RESOURCE_MANAGER.SWITCH_PLANを使用
EXEC DBMS_RESOURCE_MANAGER.SWITCH_PLAN(PLAN_NAME => 'MY_PLAN' , SID => 'TESTDB' );
page revision: 43, last edited: 18 Nov 2009 14:14