2009-09-14 7 views
8

Pour une application JDBC, j'ai besoin d'émettre quelques commandes ALTER SESSION. Je ne veux pas les mettre dans le code de l'application lui-même. Existe-t-il un moyen de spécifier des paramètres par défaut pour les paramètres de session pour le schéma de base de données que l'application utilise (du côté de la base de données)?Configurer la "modification de session" par défaut pour un utilisateur Oracle

+0

@Thilo, Merci que vous venez de me sauver beaucoup de temps! –

Répondre

13

La plupart des paramètres de session sont définis par l'application cliente. Si vous souhaitez remplacer les paramètres du client, vous pouvez créer un DATABASE TRIGGER. Par exemple, cela va créer un LOGON déclencheur sur le schéma BAR:

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 déclencheur de base de données sur l'ouverture de session est le seul moyen de le faire sans changement de code d'application. – mathewbutler

0

Je n'ai pas testé cela, mais pourriez-vous faire en sorte que l'application appelle une procédure stockée qui définit les variables de session chaque fois qu'une session est créée? Ensuite, vous pouvez modifier la procédure stockée sur le serveur si nécessaire.

+0

Le but est de ne pas changer le code de l'application. Si je le change pour inclure certaines actions sur la création de session (comme appeler une procédure stockée), je rendrais probablement ces actions configurables (comme les lire depuis un fichier), de sorte que je pourrais aussi bien inclure directement les appels ALTER SESSION. – Thilo

Questions connexes