Ensemble CS_SESSION

L'ensemble CS_SESSION fournit une interface permettant de basculer entre le service de base de données et le groupe de consommateurs de la session existante.

Note :

La prise en charge de l'ensemble CS_SESSION est disponible dans Oracle Database 19c à partir de la version 19.28 et dans Oracle Database 23ai à partir de la version 23.9.

Lorsqu'une connexion est établie avec une base de données Autonomous Database, un groupe de consommateurs de ressources est affecté à cette session. Par exemple, une session peut être créée à l'aide d'une connexion au service LOW d'une base de données Autonomous Database. Vous pouvez changer le groupe de consommateurs de ressources, par exemple de LOW à HIGH. L'ensemble CS_SESSION fournit une API pour la commutation. Pour plus d'informations, voir Noms de service de base de données prédéfinis pour les bases de données autonomes.

Les groupes de consommateurs de ressources déterminent la concurrence et le degré de parallélisme (DOP). Par exemple, les instructions d'une connexion établie au service de base de données LOW s'exécutent en série. Les instructions d'une connexion établie au service de base de données HIGH s'exécutent en parallèle. Si vous avez une charge de travail qui nécessite un traitement d'énoncés en série avec le passage à un groupe de consommateurs de ressources ÉLEVÉ pour quelques énoncés, l'ensemble CS_SESSION vous permet de passer.

SWITCH_SERVICE Procédure

Cette procédure change le service de base de données et le groupe de consommateurs de ressources de la session en cours.

Syntaxe

CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);

Paramètres

Paramètre Description
service_name

Indique le groupe de consommateurs à mettre à jour.

Selon la charge de travail, les valeurs valides sont les suivantes : HIGH, MEDIUM, LOW, TP ou TPURGENT.

Notes d'utilisation

Lorsqu'elle est appelée, la procédure bascule la session vers le service spécifié et le groupe de consommateurs de ressources associé. Si le service spécifié n'existe pas dans cette base de données, un message d'erreur est fourni. Par exemple, si vous spécifiez 'TP' comme nom de service dans une charge de travail d'entrepôt de données, l'erreur indique qu'il ne s'agit pas d'un nom de service valide. Aucune erreur n'est signalée si le service courant et le service spécifié sont identiques.

La procédure ne réinitialise pas les attributs de session. Tout ce que l'utilisateur a défini pour sa session avant d'appeler cette procédure se poursuivra tel quel. Par exemple, si un paramètre de session a été modifié puis que la session est passée à un service différent, la valeur du paramètre reste la même.

Exemple

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

Sécurité et accès

L'utilisateur ADMIN se voit accorder le privilège EXECUTE sur CS_SESSION avec GRANT OPTION. Le privilège est également accordé à DWROLE sans GRANT OPTION.

Considérations supplémentaires relatives à la sécurité

Si un utilisateur dispose des privilèges EXECUTE sur cette procédure et que vous ne voulez pas que cet utilisateur passe à un service spécifique, vous pouvez utiliser un déclencheur AFTER SET CONTAINER pour bloquer l'opération. Pour ce faire, créez un déclencheur 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;
/

Messages d'erreur

Le tableau suivant décrit les exceptions pour CS_SESSION

Error Message Cause
20,001 Nom du service non valide. Les valeurs valides sont HIGH, MEDIUM et LOW. Pour une charge de travail d'entrepôt de données, une valeur autre que 'HIGH', 'MEDIUM', 'LOW' a été spécifiée.
20,001 Nom du service non valide. Les valeurs valides sont HIGH, MEDIUM, LOW, TP, TPURGENT. Pour une charge de travail de traitement des transactions, une valeur autre que 'HIGH', 'MEDIUM', 'LOW', 'TP', 'TPURGENT' a été spécifiée.
20,002 Échec du commutateur de service. Échec du passage au nouveau service.