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
Diese Prozedur wechselt den Datenbankservice und die Consumer-Gruppe der aktuellen Session.
Übergeordnetes Thema: Von Autonomous Database bereitgestellte Paketreferenz
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: |
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. |
Übergeordnetes Thema: Paket CS_SESSION