CS_SESSIONパッケージ
CS_SESSIONパッケージは、既存のセッションのデータベース・サービスおよびコンシューマ・グループを切り替えるためのインタフェースを提供します。
ノート: CS_SESSIONパッケージのサポートは、Oracle Database 19c (バージョン19.28以降)およびOracle Database 26ai (バージョン23.9以降)で入手できます。
Autonomous AI Databaseとの接続が確立されると、そのセッションにコンシューマ・グループが割り当てられます。たとえば、Autonomous AI DatabaseのLOWサービスへの接続を使用してセッションを作成できます。たとえば、コンシューマ・グループをLOWからHIGHに切り替えることができます。CS_SESSIONパッケージは、切替え用のAPIを提供します。詳細は、Autonomous AIデータベースの事前定義済データベースのサービス名を参照してください。
コンシューマ・グループは、同時実行性および並列度(DOP)を決定します。たとえば、LOWデータベース・サービスに対して確立された接続の文は、シリアルに実行されます。HIGHデータベース・サービスに対して確立された接続上の文は、パラレルに実行されます。いくつかの文に対してHIGHコンシューマ・グループに切り替えてシリアル文の処理を必要とするワークロードがある場合、CS_SESSIONパッケージを使用すると切り替えることができます。
SWITCH_SERVICEプロシージャ
このプロシージャは、現行セッションのデータベース・サービスおよびコンシューマ・グループを切り替えます。
構文
CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);
Parameters
| パラメータ | 説明 |
|---|---|
service_name |
更新するコンシューマ・グループを指定します。 ワークロードに応じて、有効な値は |
使用上のノート
プロシージャがコールされると、セッションが指定されたサービスおよび関連するコンシューマ・グループに切り替わります。指定したサービスがそのデータベースに存在しない場合は、エラー・メッセージが表示されます。たとえば、Lakehouseワークロードのサービス名として'TP'を指定した場合、エラーには有効なサービス名ではないことが示されます。現在のサービスと指定されたサービスが同一の場合、エラーは報告されません。
このプロシージャでは、セッション属性はリセットされません。このプロシージャをコールする前にユーザーがセッションに設定したものは、そのまま続行されます。たとえば、セッション・パラメータが変更されてからセッションが別のサービスに切り替えられた場合、パラメータ値は同じままになります。
例
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
セキュリティとアクセス
ADMINユーザーには、GRANT OPTIONを持つCS_SESSIONに対する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、TP、TPURGENTです。 | トランザクション処理ワークロードの場合、'HIGH'、'MEDIUM'、'LOW'、'TP'、'TPURGENT'以外の値が指定されました。 |
| 20002 | サービスの切り替えに失敗しました。 | 新規サービスへの切替えに失敗しました。 |