https://blogs.oracle.com/WebLogicServer/entry/setting_v_session_for_a
全てのOracleデータベース接続は、セッションと呼ばれるデータベースプロセスと関わって動作します。v$sessionビューにはアクティブなデータベースセッションに関するたくさんの情報が含まれています。デフォルトでは、Oracle Thin Driverを使うと、v$session.programに"JDBC Thin Client"という値が設定されます。SQL*Plusや数多くのデータベースのバックグラウンドプログラムとJavaアプリケーションを区別しますが、付加情報がないため、Javaのすべての接続が同じように見えてしまいます。Oracle Thinドライバにある接続プロパティを使って、簡単にv$sessionにこの情報と別の値を設定することができます。次の接続プロパティをサポートしています。
- v$session.osuser
- v$session.process
- v$session.machine
- v$session.terminal
- v$session.program
固定値をデータソースに関連づけたいならば、通常の接続プロパティに値を直接設定するのが簡単です。ランタイムで値が動的に変わる場合にはもっと興味深いのです。例えば、複数のサーバが一つのドメインで動作しており、その情報がサーバで固有のものでなければならない場合、1個の固定値を使った通常のクラスタ展開では役に立たず、各サーバ個別にDataSourceを展開し、これらのプロパティに対し一意の値を持つよう記述子(Descriptor)を手で編集するというやり方では管理できません。このような場合には、システムプロパティを使用して簡単に取り扱うことができます。指定された値は、アプリケーション·サーバーのコマンドラインで設定されたJavaシステムプロパティであると解釈されます。この値はSystem.getProperty()を使用して取得し、接続プロパティの値として設定されます。WebLogic Server 12.1.3にはEncrypted Propertyという新しいプロパティがありますが、それについては別のエントリで説明する予定です。
bin/startWebLogic.shを使ってサーバを起動する場合、コマンドラインで -Dweblogic.Name=${SERVER_NAME} としますが、v$session.program システムプロパティの接続プロパティを"weblogic.Name"に設定すると、セッションプログラムの値は、接続しているWebLogic Serverに一致します。
接続プロパティはWebLogic Server管理コンソールの[接続プール]タブで、データソース構成を編集することで設定できます。プロパティは[プロパティ]と[システム・プロパティ]テキストボックスで設定します。
[訳注]
以下はWebLogic Server 12.1.3のプロパティ値設定画面のスクリーンショットです。

仮にテキスト値に4個の値を設定したとしましょう。一つはシステム・プロパティです。以下はディスクリプタの例です。
もしくは、これらの値をオンライン、もしくはオフラインのWLSTで設定することもできます。以下はオフラインWLSTスクリプトの例です。
<
property
>
<
name
>v$session.osuser</
name
>
<
value
>test1</
value
>
</
property
>
<
property
>
<
name
>v$session.process</
name
>
<
value
>test2</
value
>
</
property
>
<
property
>
<
name
>v$session.machine</
name
>
<
value
>test3</
value
>
</
property
>
<
property
>
<
name
>v$session.terminal</
name
>
<
value
>test4</
value
>
</
property
>
<
property
>
<
name
>v$session.program</
name
>
<
sys-prop-value
>weblogic.Name</
sys-prop-value
>
</
property
>
$SERVER_NAME がmyserverである場合、クエリをかけると、以下のような応答が返ってきます。
cd(
'/JDBCSystemResource/myds/JdbcResource/myds'
)
cd(
'JDBCDriverParams/NO_NAME_0'
)
cd(
'Properties/NO_NAME_0'
)
create(
'v$session.program'
,
'Property'
)
cd(
'Property'
)
cd(
'v$session.program'
)
set
(
'SysPropValue'
,
'weblogic.Name'
)
サーバー名が明らかでない場合は、v$session.programに WebLogic Server$ SERVER_NAME を設定することができます。-Djdbc.process=<PID>を設定して、特定のWebLogic Serverのサーバプロセスに接続を紐付けることもできます。WebLogic Serverのデータソース名をv$session.programの値に追加したいと思うかもしれません。Javaの値 user.name を osuser に設定することができます。
SQL>
select
program, osuser, process, machine, terminal
from
v$session
where
program =
'myserver'
;
myserver test1 test2 test3 test4
システムプロパティを使用すると、特に大規模な構成では、接続ソースに関する情報を追跡する上で、強力な機能になることでしょう。
0 件のコメント:
コメントを投稿