ユーザー情報、クライアント情報、OS、IP アドレス、セッションの情報
SYS_CONTEXT ( namespace , param [, max_len] )
USERENV ( param )
return [ varchar2 ]
- 指定したネームスペース(一般的には 'USERENV')の parameter を戻す。
ネームスペース
事前定義されている組込みネームスペース名 USERENV (関数名ではない) または、「ユーザー定義のコンテキスト・ネームスペース」
ネームスペースのコンテキスト名
USERENV ネームスペースのコンテキスト名 、または、「ユーザー定義のコンテキスト・ネームスペース」のコンテキスト名
SYS_CONTEXT 関数の内容
組み込みされた USERENV ネームスペース、または、ユーザー定義の namespace に関連付けられた コンテキスト名 param の値を VARCHAR2 型で戻す。 戻す文字列の長さが max_len を超える場合には切り捨てられる。
現行のセッションのユーザー情報をもつ USERENV という組込みネームスペースが用意されている。目的に応じたコンテキストを自前で作成することも可能。
USETENV 関数の内容
下位互換用だが SYS_CONTEXT にはない固有の特殊なパラメータもある。基本的に SYS_CONTEXT('USERENV', param ) と同じ。
特殊なパラメータとしては 現在のシステム変更番号を取得する パラメータ 'COMMITSCN' がある。
しかし、それも Oracle 9i 以降では DBMS_FLASHBACK パッケージに GET_SYSTEM_CHANGE_NUMBER という機能拡張された代替パッケージファンクションが用意されているので、あまり使われることもない。
SYS_CONTEXT 使用例
ユーザーID、ユーザー名
SQL> select SYS_CONTEXT('USERENV', 'SESSION_USERID') USER_ID,
2 SYS_CONTEXT('USERENV', 'SESSION_USER') USER_NAME from dual;
USER_ID USER_NAME
-------------------- --------------------
55 RIVUS
クライアントのユーザー名と接続プログラム(例:Windows + SQL*Plus 利用の場合)
SQL> select SYS_CONTEXT('USERENV', 'OS_USER') OS_USERNAME,
2 SYS_CONTEXT('USERENV', 'MODULE') USR_PROCESS from dual;
OS_USERNAME USR_PROCESS
-------------------- --------------------
WINDOWS-X259\rivus SQL*Plus
HOSTNAME、IP アドレス(Oracle NET 接続している場合のみ)
SQL> select SYS_CONTEXT('USERENV', 'HOST') C_HOST,
2 SYS_CONTEXT('USERENV', 'IP_ADDRESS') C_IP from dual;
C_HOST C_IP
---------------------- --------------------
WORKGROUP\WINDOWS-X259 192.168.*.*
SQL 関数 - SYS_CONTEXT,USERENV 関連