2009-09-14 15 views
8

Dla aplikacji JDBC muszę wydać kilka poleceń ALTER SESSION. Nie chcę umieszczać ich w samym kodzie aplikacji. Czy istnieje sposób określania wartości domyślnych dla parametrów sesji dla schematu bazy danych, z którego korzysta aplikacja (po stronie bazy danych)?Skonfiguruj domyślną "alternatywną sesję" dla użytkownika Oracle

+0

@Thilo, dzięki po prostu uratował mnie dużo czasu! –

Odpowiedz

13

większość parametrów sesji definiuje aplikacja kliencka. Jeśli chcesz zastąpić ustawienia klienta, możesz utworzyć DATABASE TRIGGER. Na przykład, to stworzy LOGON spust na schemacie 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

Wyzwalanie bazy danych logowania jest jedynym sposobem wykonania tej czynności bez zmiany kodu aplikacji. – mathewbutler

0

Nie przetestowałem tego, ale czy można wywołać procedurę składowaną, która ustawia zmienne sesji podczas tworzenia sesji? W razie potrzeby można zmodyfikować procedurę przechowywaną po stronie serwera.

+0

Chodzi o to, aby w ogóle nie zmieniać kodu aplikacji. Jeśli zmienię to, aby uwzględnić pewne działania podczas tworzenia sesji (takie jak wywołanie procedury przechowywanej), prawdopodobnie ustawiłbym te akcje jako konfigurowalne (np. Odczytując je z pliku), tak żebym mógł równie dobrze włączyć wywołania ALTER SESSION bezpośrednio. – Thilo

Powiązane problemy