CS_SESSION-Package

Das Package CS_SESSION stellt eine Schnittstelle bereit, über die der Datenbankservice und die Nutzungsgruppe der vorhandenen Session gewechselt werden können.

Hinweis:

Unterstützung für das Package CS_SESSION ist ab Version 19.28 in Oracle Database 19c und ab Version 23.9 in Oracle Database 23ai verfügbar.

Wenn eine Verbindung mit einer Autonomous Database hergestellt wird, wird dieser Session eine Nutzungsgruppe zugewiesen. Beispiel: Eine Session kann mit einer Verbindung zum LOW-Service einer Autonomous Database erstellt werden. Sie können die Nutzungsgruppe wechseln, z.B. von LOW zu HIGH. Das CS_SESSION-Package stellt eine API für den Wechsel bereit. Weitere Informationen finden Sie unter Vordefinierte Datenbankservicenamen für autonome Datenbanken.

Die Nutzungsgruppen bestimmen Parallelität und Parallelitätsgrad (DOP). Beispiel: Anweisungen zu einer Verbindung, die mit dem LOW-Datenbankservice hergestellt wurde, werden seriell ausgeführt. Anweisungen zu einer Verbindung mit dem HIGH-Datenbankservice werden parallel ausgeführt. Wenn eine Workload eine serielle Anweisungsverarbeitung erfordert, bei der für einige Anweisungen zu einer HIGH-Nutzungsgruppe gewechselt wird, können Sie mit dem Package CS_SESSION wechseln.

Prozedur SWITCH_SERVICE

Diese Prozedur wechselt den Datenbankservice und die Nutzungsgruppe der aktuellen Session.

Syntax

CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);

Parameter

Parameter Beschreibung
service_name

Gibt die zu aktualisierende Nutzungsgruppe an.

Je nach Workload sind folgende gültige Werte verfügbar: HIGH, MEDIUM, LOW, TP oder TPURGENT.

Verwendungshinweise

Wenn die Prozedur aufgerufen wird, wechselt sie die Session auf den angegebenen Service und die zugehörige Nutzungsgruppe. Wenn der angegebene Service nicht in dieser Datenbank vorhanden ist, wird eine Fehlermeldung angezeigt. Beispiel: Wenn Sie "TP" als Servicenamen für eine Data Warehouse-Workload angeben, gibt der Fehler an, dass es sich nicht um einen gültigen Servicenamen handelt. Es wird kein Fehler gemeldet, wenn der aktuelle Service und der angegebene Service identisch sind.

Die Prozedur setzt keine Sessionattribute zurück. Alles, was der Benutzer vor dem Aufrufen dieser Prozedur für seine Session festgelegt hat, wird unverändert fortgesetzt. Beispiel: Wenn ein Sessionparameter geändert wurde und die Session später zu einem anderen Service wechselte, bleibt der Parameterwert gleich.

Beispiel

BEGIN
  CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/

Sicherheit und Zugriff

Dem Benutzer ADMIN wird die Berechtigung EXECUTE auf CS_SESSION mit GRANT OPTION erteilt. Die Berechtigung wird auch DWROLE ohne GRANT OPTION erteilt.

Zusätzliche Sicherheitsbetrachtungen

Wenn einem Benutzer EXECUTE-Berechtigungen für diese Prozedur erteilt werden und dieser Benutzer nicht zu einem bestimmten Service wechseln soll, können Sie den Vorgang mit einem AFTER SET CONTAINER-Trigger blockieren. Dies wird durch Erstellen eines AFTER SET CONTAINER-Triggers erreicht.

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;
/

Fehlermeldungen

In der folgenden Tabelle werden Ausnahmen für CS_SESSION beschrieben

Fehler Meldung Ursache
20.001 Ungültiger Service-Name. Gültige Werte sind HIGH, MEDIUM, LOW. Für eine Data Warehouse-Workload wurde ein anderer Wert als "HIGH", "MEDIUM", "LOW" angegeben.
20.001 Ungültiger Service-Name. Gültige Werte sind HIGH, MEDIUM, LOW, TP, TPURGENT. Für eine Transaktionsverarbeitungs-Workload wurde ein anderer Wert als "HIGH", "MEDIUM", "LOW", "TP", "TPURGENT" angegeben.
20.002 Servicewechsel nicht erfolgreich. Wechsel zum neuen Service nicht erfolgreich.