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
ユーザーには、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 | サービス・スイッチに失敗しました。 | 新しいサービスへの切替えに失敗しました。 |
親トピック: CS_SESSIONパッケージ