Definire un Oracle Session Parameter per uno specifico utente

Se volgiamo effettuare una modifica di un parametro di sessione per un utente specifico, si può definire un trigger che imposta il parametro alla login dell'utente. Questo trigger scatta alla connessione del db di qualsiasi utente.

L'utente dell'esempio è PIPPO.

CREATE OR REPLACE TRIGGER set_parameter_PIPPO
AFTER LOGON ON DATABASE
DECLAREusername VARCHAR2(30);
cmmd VARCHAR2(64);
BEGIN
cmmd:='alter session set NLS_DATE_FORMAT=''dd/mm/yyyy hh24:mi:ss''';
username:=SYS_CONTEXT('USERENV','SESSION_USER');
IF username = 'pippo' then
EXECUTE IMMEDIATE cmmd;
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
/

Se si vuole che il trigger scatti solo alla connessione dello specifico schema utilizzare la clausola "after logon on ...schema".

CREATE TRIGGER PIPPO.set_parameter_schema_PIPPO
AFTER LOGON ON PIPPO.SCHEMA
DECLARE
cmmd VARCHAR2(64);
BEGIN
cmmd:='alter session set NLS_DATE_FORMAT=''dd/mm/yyyy hh24:mi:ss''';
EXECUTE IMMEDIATE cmmd;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
/

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database