Pacchetto CS_SESSION
Il pacchetto CS_SESSION fornisce un'interfaccia per cambiare il servizio di database e il gruppo di consumer della sessione esistente.
Quando viene stabilita una connessione con un Autonomous AI 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 AI Database. Potrebbe essere necessario cambiare il gruppo di consumer, ad esempio da LOW a HIGH. Il pacchetto CS_SESSION fornisce un'API per la commutazione. Per ulteriori informazioni, vedere Nomi dei servizi di database per Autonomous AI Database.
I gruppi di consumer 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 modo seriale. 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 consente di cambiare il servizio di database e il gruppo di consumer della sessione corrente.
Argomento padre: Riferimento del pacchetto fornito dal database AI autonomo
Procedura SWITCH_SERVICE
Questa procedura consente di cambiare 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. I valori validi sono: |
Note sull'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 fornito un messaggio di errore. Ad esempio, se si specifica 'TP' come nome di servizio in un carico di lavoro Lakehouse, l'errore indica che non si tratta di un nome di servizio valido. Non viene segnalato alcun errore se il servizio corrente e il servizio specificato sono identici.
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.
Considerazioni aggiuntive sulla sicurezza
Se a un utente vengono concessi i privilegi EXECUTE su questa procedura e non si desidera che passi a un servizio specifico, è possibile utilizzare un trigger AFTER SET CONTAINER per bloccare l'operazione. Ciò viene ottenuto 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 di servizio non valido. I valori validi sono HIGH, MEDIUM, LOW, TP, TPURGENT. | È stato specificato un valore diverso da 'HIGH', 'MEDIUM', 'LOW', 'TP' o 'TPURGENT'. |
| 20.002 | Switch del servizio non riuscito. | Passaggio al nuovo servizio non riuscito. |
Argomento padre: Pacchetto CS_SESSION