2009-09-14 8 views
8

JDBCアプリケーションでは、いくつかのALTER SESSIONコマンドを発行する必要があります。私はそれらをアプリケーションコード自体に入れたくありません。アプリケーションが使用するデータベーススキーマ(データベース側)のセッションパラメータのデフォルトを指定する方法はありますか?Oracleユーザーのデフォルトの「alter session」を設定する

+0

@Thiloを、おかげであなただけの私に多くの時間を保存しました! –

答えて

13

ほとんどのセッションパラメータは、クライアントアプリケーションによって定義されます。クライアント設定を上書きする場合は、DATABASE TRIGGERを作成します。たとえば、これはBARスキーマにLOGONトリガーを作成します。

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

ログオンデータベーストリガーは、アプリケーションコードの変更なしでこれを行う唯一の方法です。 – mathewbutler

0

私はこれをテストしていませんが、セッションが作成されるたびにセッション変数を設定するストアドプロシージャをアプリケーションに呼び出すことができますか?次に、必要に応じてサーバー側のストアドプロシージャを変更することができます。

+0

ポイントは、アプリケーションコードをまったく変更しないことです。セッションの作成(ストアドプロシージャの呼び出しなど)にいくつかのアクションを含めるように変更すると、おそらくALTER SESSION呼び出しを直接インクルードできるように、これらのアクションを構成可能にすることができます。 – Thilo

関連する問題