CS_SESSION-Package

Das Package CS_SESSION stellt eine Schnittstelle zum Wechseln des Datenbankservice und der Nutzungsgruppe der vorhandenen Session bereit.

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. Möglicherweise möchten Sie die Consumer-Gruppe wechseln, z.B. von LOW zu HIGH. Das CS_SESSION-Paket bietet eine API für den Wechsel. Weitere Informationen finden Sie unter Datenbankservicenamen für Autonomous Database.

Die Nutzungsgruppen bestimmen Parallelität und Parallelitätsgrad (DOP). Beispiel: Anweisungen für eine Verbindung, die mit dem LOW-Datenbankservice hergestellt wurden, werden seriell ausgeführt. Anweisungen für eine Verbindung, die mit dem HIGH-Datenbankservice hergestellt wurde, werden parallel ausgeführt. Wenn Sie eine Workload haben, für die eine serielle Anweisungsverarbeitung mit einem Wechsel zu einer HIGH-Consumer-Gruppe für einige Anweisungen erforderlich ist, können Sie mit dem CS_SESSION-Package wechseln.

Prozedur SWITCH_SERVICE

Mit dieser Prozedur können Sie den Datenbankservice und die Consumer-Gruppe der aktuellen Session wechseln.

Syntax

CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);

Parameter

Parameter Beschreibung
service_name

Gibt die zu aktualisierende Consumer-Gruppe an.

Gültige Werte sind je nach Workload: HIGH, MEDIUM, LOW, TP oder TPURGENT.

Hinweise zur Verwendung

Beim Aufruf wechselt die Prozedur die Session zum angegebenen Service und zur zugehörigen Consumer-Gruppe. Wenn der angegebene Service in dieser Datenbank nicht vorhanden ist, wird eine Fehlermeldung ausgegeben. Beispiel: Wenn Sie "TP" als Service-Namen in einer Workload des Typs "Data Warehouse" angeben, gibt der Fehler an, dass es sich nicht um einen gültigen Service-Namen handelt. Wenn der aktuelle Service und der angegebene Service identisch sind, wird kein Fehler gemeldet.

Mit der Prozedur werden keine Sessionattribute zurückgesetzt. Alle Sessioneinstellungen, die der Benutzer vor dem Aufrufen dieser Prozedur vorgenommen hat, werden unverändert übernommen. Beispiel: Wenn ein Sessionparameter geändert wurde und die Session später zu einem anderen Service wechselt, bleibt der Parameterwert gleich.

Beispiel

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

Sicherheit und Zugriff

Dem ADMIN-Benutzer wird die Berechtigung EXECUTE für CS_SESSION mit GRANT OPTION erteilt. Die Berechtigung wird auch DWROLE ohne GRANT OPTION erteilt.

Weitere Sicherheitsaspekte

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 erreicht, indem Sie einen AFTER SET CONTAINER-Trigger erstellen.

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 Servicename. Gültige Werte: HIGH, MEDIUM, LOW. Bei einer Workload vom Typ "Data Warehouse" wurde ein anderer Wert als "HIGH", "MEDIUM" oder "LOW" angegeben.
20.001 Ungültiger Servicename. Gültige Werte: HIGH, MEDIUM, LOW, TP, TPURGENT. Bei einer Workload, die eine Transaktionsverarbeitung ausführt, wurde ein anderer Wert als 'HIGH', 'MEDIUM', 'LOW', 'TP' oder 'TPURGENT' angegeben.
20.002 Service konnte nicht gewechselt werden. Fehler beim Wechseln zum neuen Service.