Pacchetto CS_SESSION
Il package CS_SESSION
fornisce un'interfaccia per lo switch del servizio di database e del gruppo di consumer della sessione esistente.
Quando viene stabilita una connessione con un Autonomous Database, a tale sessione viene assegnato un gruppo di consumer. Ad esempio, è possibile creare una sessione utilizzando una connessione al servizio LOW di un Autonomous Database. È possibile cambiare il gruppo di consumer, ad esempio da LOW a HIGH. Il pacchetto CS_SESSION
fornisce un'interfaccia API per il passaggio. Per ulteriori informazioni, vedere Nomi dei servizi di database per Autonomous Database.
I gruppi di consumatori determinano la concorrenza e il grado di parallelismo (DOP). Ad esempio, le istruzioni su una connessione stabilita al servizio di database LOW vengono eseguite in serie. Le istruzioni su una connessione stabilita al servizio di database HIGH vengono eseguite in parallelo. Se si dispone di un carico di lavoro che richiede l'elaborazione delle istruzioni seriali con il passaggio a un gruppo di consumer HIGH per alcune istruzioni, il pacchetto CS_SESSION
consente di passare a un altro gruppo.
- SWITCH_SERVICE Procedura
Questa procedura cambia il servizio di database e il gruppo di consumer della sessione corrente.
Argomento padre: riferimento al package fornito da Autonomous Database
SWITCH_SERVICE Procedura
Questa procedura cambia il servizio di database e il gruppo di consumer della sessione corrente.
Sintassi
CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);
Parametri
Parametro | descrizione; |
---|---|
service_name |
Specifica il gruppo di consumer da aggiornare. A seconda del carico di lavoro, i valori validi sono: |
Note per uso
Quando viene richiamata, la procedura passa la sessione al servizio specificato e al gruppo di consumer correlato. Se il servizio specificato non esiste in tale database, viene visualizzato un messaggio di errore. Ad esempio, se si specifica 'TP' come nome del servizio in un carico di lavoro del data warehouse, l'errore indica che non è un nome di servizio valido. Se il servizio corrente e quello specificato sono identici, non viene segnalato alcun errore.
La procedura non reimposta gli attributi della sessione. Tutto ciò che l'utente ha impostato per la propria sessione prima di chiamare questa procedura continuerà così com'è. Ad esempio, se un parametro di sessione è stato modificato e successivamente la sessione è passata a un servizio diverso, il valore del parametro rimarrà invariato.
Esempio
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
Sicurezza e accesso
All'utente ADMIN
viene concesso il privilegio EXECUTE
su CS_SESSION
con GRANT OPTION
. Il privilegio viene concesso anche a DWROLE
senza GRANT OPTION
.
Ulteriori considerazioni sulla sicurezza
Se a un utente vengono concessi i privilegi EXECUTE
per questa procedura e non si desidera che l'utente passi a un servizio specifico, è possibile utilizzare un trigger AFTER SET CONTAINER
per bloccare l'operazione. Ciò si ottiene creando un trigger 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;
/
Messaggi di errore
Nella tabella seguente vengono descritte le eccezioni per CS_SESSION
Errore | Messaggio | Causa |
---|---|---|
20.001 | Nome servizio non valido. I valori validi sono HIGH, MEDIUM, LOW. | Per un carico di lavoro del data warehouse è stato specificato un valore diverso da 'HIGH', 'MEDIUM', 'LOW'. |
20.001 | Nome servizio non valido. I valori validi sono HIGH, MEDIUM, LOW, TP, TPURGENT. | Per un carico di lavoro di elaborazione delle transazioni è stato specificato un valore diverso da 'HIGH', 'MEDIUM', 'LOW', 'TP', 'TPURGENT'. |
20.002 | Switch del servizio non riuscito. | Passaggio al nuovo servizio non riuscito. |
Argomento padre: CS_SESSION Package