2009-09-14 16 views
8

Per un'applicazione JDBC è necessario emettere alcuni comandi ALTER SESSION. Non voglio metterli nel codice dell'applicazione stesso. Esiste un modo per specificare i valori predefiniti per i parametri di sessione per lo schema del database che l'applicazione utilizza (sul lato del database)?Impostare "alter sessione" predefinito per un utente Oracle

+0

@Thilo, grazie che mi hai appena salvato un sacco di tempo! –

risposta

13

la maggior parte dei parametri di sessione sono definiti dall'applicazione client. Se si desidera sovrascrivere le impostazioni del client, è possibile creare uno DATABASE TRIGGER. Ad esempio, questo creerà un innesco LOGON sul BAR schema:

CREATE OR REPLACE TRIGGER bar.foo 
    AFTER LOGON ON DATABASE WHEN (USER = 'BAR') 
BEGIN 
    dbms_session.set_nls('NLS_NUMERIC_CHARACTERS', '''.,'''); 
    EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=hr'; 
END foo; 
+1

Un trigger del database all'accesso è l'unico modo per farlo senza modificare il codice dell'applicazione. – mathewbutler

0

Non l'ho ancora provato, ma si potrebbe fare in modo che l'applicazione chiami una procedura memorizzata che imposta le variabili di sessione ogni volta che viene creata una sessione? Quindi, è possibile modificare la stored procedure sul lato server quando necessario.

+0

Il punto è di non modificare affatto il codice dell'applicazione. Se lo cambio per includere alcune azioni sulla creazione della sessione (come ad esempio chiamare una procedura memorizzata), probabilmente renderò configurabili queste azioni (come leggerle da un file), così che potrei anche includere direttamente le chiamate ALTER SESSION. – Thilo

Problemi correlati