Paquete CS_SESSION
El paquete CS_SESSION
proporciona una interfaz para cambiar el servicio de base de datos y el grupo de consumidores de la sesión existente.
Cuando se establece una conexión con una instancia de Autonomous Database, a esa sesión se le asigna un grupo de consumidores. Por ejemplo, se podría crear una sesión mediante una conexión al servicio LOW de una instancia de Autonomous Database. Puede que desee cambiar el grupo de consumidores, por ejemplo, de LOW a HIGH. El paquete CS_SESSION
proporciona una API para el cambio.
- Consulte Nombres de servicios de base de datos para Autonomous Data Warehouse para obtener más información.
- Consulte Nombres de servicios de base de datos para Autonomous Transaction Processing y Autonomous JSON Database para obtener más información.
Los grupos de consumidores determinan la simultaneidad y el grado de paralelismo (DOP). Por ejemplo, las sentencias de una conexión establecida al servicio de base de datos LOW se ejecutan en serie. Las sentencias de una conexión establecida al servicio de base de datos HIGH se ejecutan en paralelo. Si tiene una carga de trabajo que requiere el procesamiento de sentencias en serie con el cambio a un grupo de consumidores HIGH para algunas sentencias, el paquete CS_SESSION
le permite cambiar.
- Procedimiento SWITCH_SERVICE
Con este procedimiento se cambia el servicio de base de datos y el grupo de consumidores de la sesión actual.
Tema principal: Referencia de paquete proporcionado por Autonomous Database
Procedimiento SWITCH_SERVICE
Con este procedimiento se cambia el servicio de base de datos y el grupo de consumidores de la sesión actual.
Sintaxis
CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);
Parámetros
parámetro | Descripción |
---|---|
service_name |
Especifica el grupo de consumidores que se debe actualizar. Según la carga de trabajo, los valores válidos son: |
Notas de Uso
Cuando se llama, el procedimiento cambia la sesión al servicio especificado y al grupo de consumidores relacionado. Si el servicio especificado no existe en esa base de datos, se proporciona un mensaje de error. Por ejemplo, si especifica "TP" como nombre de servicio en una carga de trabajo de almacén de datos, el error indica que no es un nombre de servicio válido. No se notifica ningún error si el servicio actual y el servicio especificado son idénticos.
El procedimiento no restablece los atributos de sesión. Cualquier elemento definido por el usuario para su sesión antes de llamar a este procedimiento continuará tal cual. Por ejemplo, si se ha modificado un parámetro de sesión y, posteriormente, la sesión se ha cambiado a un servicio diferente, el valor del parámetro permanecerá igual.
Ejemplo
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
Seguridad y acceso
Al usuario ADMIN
se le otorga al usuario EXECUTE
el privilegio CS_SESSION
con GRANT OPTION
. También se otorga el privilegio a DWROLE
sin GRANT OPTION
.
Consideraciones de seguridad adicionales
Si a un usuario se le otorgan privilegios EXECUTE
en este procedimiento y no desea que ese usuario cambie a un servicio específico, puede utilizar un disparador AFTER SET CONTAINER
para bloquear la operación. Esto se consigue creando un disparador 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;
/
Mensajes de Error
En la siguiente tabla se describen las excepciones para CS_SESSION
Error | Mensaje | Causa |
---|---|---|
20.001 | Nombre de servicio no válido. Los valores válidos son H Alto, Medio y Bajo. | Para una carga de trabajo de almacén de datos, se ha especificado un valor distinto de 'HIGH', 'MEDIUM', 'LOW'. |
20.001 | Nombre de servicio no válido. Los valores válidos son Alto, Medio, Bajo, TP y Turgente. | Para una carga de trabajo de procesamiento de transacciones, se ha especificado un valor distinto de 'HIGH', 'MEDIUM', 'LOW', 'TP', 'TPURGENT'. |
20.002 | Fallo de cambio de servicio. | Fallo al cambiar al nuevo servicio. |
Tema principal: Paquete CS_SESSION