Package CS_SESSION
Le package CS_SESSION
fournit une interface permettant de basculer entre le service de base de données et le groupe de destinataires de la session existante.
Lorsqu'une connexion est établie avec une instance 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 instance Autonomous Database. Vous pouvez passer du groupe de consommateurs de ressources LOW au groupe HIGH, par exemple. Le package CS_SESSION
fournit une API pour le basculement. Pour plus d'informations, reportez-vous à Noms de service Database pour Autonomous Database.
Les groupes de consommateurs déterminent la simultanéité et le degré de parallélisme. Par exemple, les instructions d'une connexion établie avec le service de base de données LOW s'exécutent en série. Les instructions relatives à une connexion établie avec le service de base de données HIGH sont exécutées en parallèle. Si vous disposez d'une charge globale nécessitant un traitement d'instruction série avec basculement vers un groupe de consommateurs de ressources HIGH pour quelques instructions, le package CS_SESSION
vous permet de basculer.
- SWITCH_SERVICE Procédure
Cette procédure bascule le service de base de données et le groupe de consommateurs de ressources de la session en cours.
Rubrique parent : Référence de package fourni avec Autonomous Database
Procédure SWITCH_SERVICE
Cette procédure bascule 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 de ressources à mettre à jour. Selon la charge globale, les valeurs valides sont : |
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 indiquez "TP" comme nom de service sur une charge globale de data warehouse, l'erreur indique qu'il ne s'agit pas d'un nom de service valide. Aucune erreur n'est signalée si le service actuel 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 autre service, la valeur du paramètre reste la même.
Exemple
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
Sécurité et accès
Le privilège EXECUTE
est accordé à l'utilisateur ADMIN
sur CS_SESSION
avec GRANT OPTION
. Le privilège est également accordé à DWROLE
sans GRANT OPTION
.
Remarques supplémentaires sur la sécurité
Si des privilèges EXECUTE
sont accordés à un utilisateur sur cette procédure et que vous ne voulez pas qu'il bascule vers 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
Erreur | Message | Cause |
---|---|---|
20 001 | Nom de service non valide. Les valeurs valides sont HIGH, MEDIUM et LOW. | Pour une charge globale d'entrepôt de données, une valeur autre que "HIGH", "MEDIUM", "LOW" a été indiquée. |
20 001 | Nom de service non valide. Les valeurs valides sont HAUTE, MOYENNE, BASSE, TP, TPURGENT. | Pour une charge globale de traitement des transactions, une valeur autre que "HIGH", "MEDIUM", "LOW", "TP", "TPURGENT" a été spécifiée. |
20 002 | Echec du changement de service. | Echec du passage au nouveau service. |
Rubrique parent : Package CS_SESSION