CS_SESSIONパッケージ

CS_SESSIONパッケージは、既存のセッションのデータベース・サービスおよびコンシューマ・グループを切り替えるためのインタフェースを提供します。

Autonomous Databaseとの接続が確立されると、そのセッションにコンシューマ・グループが割り当てられます。たとえば、Autonomous DatabaseのLOWサービスへの接続を使用してセッションを作成できます。たとえば、コンシューマ・グループをLOWからHIGHに切り替えることもできます。CS_SESSIONパッケージは、切替え用のAPIを提供します。詳細は、Autonomous Databaseのデータベース・サービス名を参照してください。

コンシューマ・グループは、同時実行性と並列度(DOP)を決定します。たとえば、LOWデータベース・サービスに対して確立された接続の文はシリアルに実行されます。HIGHデータベース・サービスに対して確立された接続上の文は、パラレルに実行されます。いくつかの文でHIGHコンシューマ・グループに切り替えてシリアル文の処理を必要とするワークロードがある場合は、CS_SESSIONパッケージで切替えが可能です。

SWITCH_SERVICEプロシージャ

このプロシージャは、現行のセッションのデータベース・サービスおよびコンシューマ・グループを切り替えます。

構文

CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);

パラメータ

パラメータ 摘要
service_name

更新するコンシューマ・グループを指定します。

ワークロードに応じて、有効な値はHIGHMEDIUMLOWTPまたはTPURGENTです。

使用上のノート

呼び出されると、このプロシージャはセッションを指定されたサービスおよび関連するコンシューマ・グループに切り替えます。指定されたサービスがそのデータベースに存在しない場合は、エラーメッセージが表示されます。たとえば、データ・ウェアハウス・ワークロードのサービス名として「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 サービス名が無効です。有効な値は、「高」、「中」、「低」、「TP」、「TPURGENT」です。 トランザクション処理ワークロードの場合、'HIGH'、'MEDIUM'、'LOW'、'TP'、'TPURGENT'以外の値が指定されました。
20002 サービスの切り替えに失敗しました。 新規サービスへの切替えに失敗しました。