CS_SESSIONパッケージ
CS_SESSION
パッケージは、既存のセッションのデータベース・サービスおよびコンシューマ・グループを切り替えるためのインタフェースを提供します。
Autonomous Databaseとの接続が確立されると、そのセッションにはコンシューマ・グループが割り当てられます。たとえば、Autonomous DatabaseのLOWサービスへの接続を使用してセッションを作成できます。コンシューマ・グループをLOWからHIGHなどに切り替えることもできます。CS_SESSION
パッケージは、切替えのためのAPIを提供します。詳細は、Autonomous Databaseのデータベース・サービス名を参照してください。
コンシューマ・グループは、同時実行性および並列度(DOP)を決定します。たとえば、LOWデータベース・サービスに設定された接続における文は、シリアルナンバーされます。HIGHデータベース・サービスに対して確立された接続での文は、パラレルに実行されます。少数の文のHIGHコンシューマ・グループへの切替えでシリアル文処理を必要とするワークロードがある場合、CS_SESSION
パッケージを使用して切り替えることができます。
- SWITCH_SERVICEプロシージャ
このプロシージャは、現在のセッションのデータベース・サービスおよびコンシューマ・グループを切り替えます。
SWITCH_SERVICEプロシージャ
このプロシージャは、現在のセッションのデータベース・サービスおよびコンシューマ・グループをスイッチします。
構文
CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);
パラメータ
パラメータ | 説明 |
---|---|
service_name |
更新するコンシューマ・グループを指定します。 ワークロードに応じて、有効な値は |
使用上のノート
コールされると、プロシージャは、指定されたサービスおよび関連するコンシューマ・グループにセッションを切り替えます。指定されたサービスがデータベースに存在しない場合は、エラー・メッセージが表示されます。たとえば、データ・ウェアハウス・ワークロードのサービス名として'TP'を指定した場合、エラーはそれが有効なサービス名ではないことを示しています。現在のサービスと指定されたサービスが同一である場合、エラーはレポートされません。
このプロシージャでは、セッション属性はリセットされません。このプロシージャをコールする前にユーザーがセッションに対して設定したものは、常に続行されます。たとえば、セッション・パラメータが変更され、後でセッションが別のサービスに切り替わった場合、パラメータ値は同じままになります。
例
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
セキュリティおよびアクセス
ADMIN
ユーザーには、CS_SESSION
に対するGRANT OPTION
付きのEXECUTE
権限が付与されます。権限は、GRANT OPTION
なしでDWROLE
にも付与されます。
セキュリティのその他の考慮事項
ユーザーにこのプロシージャに対するEXECUTE
権限が付与されていて、そのユーザーが特定のサービスへの切替えを行わないようにする場合は、AFTER SET CONTAINER
トリガーを使用して操作をブロックできます。これを行うには、AFTER SET CONTAINER
トリガーを作成します。
CREATE OR REPLACE TRIGGER SESS_SWITCH
AFTER SET CONTAINER ON DATABASE
BEGIN
IF SYS_CONTEXT('USERENV','SESSION_USER') = 'USER' and
SYS_CONTEXT('USERENV','SERVICE_NAME') = 'serviceexample_low.adwc.oraclecloud.com'
THEN
NULL;
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Denied! You are not allowed to switch service in the database');
END IF;
END;
/
エラー・メッセージ
次の表に、CS_SESSION
の例外を示します
エラー | メッセージ | 原因 |
---|---|---|
20001 | 無効なサービス名有効な値はHIGH、MEDIUM、LOWです。 | データ・ウェアハウス・ワークロードに対して、「HIGH」、「MEDIUM」、「LOW」以外の値が指定されました。 |
20001 | 無効なサービス名有効な値は、HIGH、MEDIUM、LOW、TPURGENTです。 | トランザクション処理ワークロードに対して、「HIGH」、「MEDIUM」、「LOW」、「TP」、「TPURGENT」以外の値が指定されました。 |
20002 | サービスの切替えに失敗しました。 | 新しいサービスの切替えに失敗しました。 |
親トピック: CS_SESSIONパッケージ化