ここではOracleのSYS_CONTEXT関数を使ってサーバーの情報を取得する方法について紹介します。

SYS_CONTEXT関数

SYS_CONTEXT関数は、第2引数に指定したパラメータにより、データベース名や接続中のクライアントのマシン名などのサーバー情報を取得することができます。

構文

SYS_CONTEXT('USERENV', {パラメータ})

以下はSYS_CONTEXT関数のパラメータに「DB_NAME」を指定してデータベース名を取得する例です。

SELECT SYS_CONTEXT('USERENV', 'DB_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
XE


以下はSYS_CONTEXT関数のパラメータに「NLS_SORT」を指定してソート基準を取得する例です。

SELECT SYS_CONTEXT('USERENV', 'NLS_SORT') FROM DUAL;
SYS_CONTEXT('USERENV','NLS_SORT')
--------------------------------------------------------------------------------
BINARY


以下は主要なSYS_CONTEXT関数のパラメータです。

パラメータ説明
CURRENT_SCHEMA現在アクティブなデフォルトのスキーマの名前。
CURRENT_SCHEMAID現在アクティブなデフォルトのスキーマの識別子。
CURRENT_USER現在アクティブな権限を持つデータベース・ユーザー名。
CURRENT_USERID権限が現在アクティブになっているデータベース・ユーザーの識別子。
DB_DOMAINDB_DOMAIN初期化パラメータで指定されたデータベースのドメインを戻します。
DB_NAMEDB_NAME初期化パラメータで指定されたデータベース名を戻します。
DB_UNIQUE_NAMEDB_UNIQUE_NAME初期化パラメータで指定されたデータベース名を戻します。
HOST接続中のクライアントのホスト・マシン名を戻します。
INSTANCE現行のインスタンスのインスタンス識別番号を戻します。
IP_ADDRESS接続中のクライアントのマシンのIPアドレスを戻します。
ISDBAオペレーティング・システムまたはパスワード・ファイルによって、ユーザーがDBA権限を持っていると認証された場合、TRUEを戻します。
LANG言語名の略称を戻します。これは、既存の’LANGUAGE’パラメータを短縮したものです。
LANGUAGE現行のセッションで使用している言語(language)および地域(territory)を、データベース・キャラクタ・セット(character set)も含めて次の書式で戻します。
NLS_CALENDAR現行のセッションの現行のカレンダを戻します。
NLS_CURRENCY現行のセッションの通貨を戻します。
NLS_DATE_FORMATセッションの日付書式を戻します。
NLS_DATE_LANGUAGE日付の表示に使用される言語を戻します。
NLS_SORTBINARYまたは言語ソート基準を戻します。
NLS_TERRITORY現行のセッションの地域を戻します。
OS_USERデータベース・セッションを開始するクライアント・プロセスのオペレーティング・システム・ユーザー名を戻します。
SERVER_HOSTインスタンスを実行しているマシンのホスト名。
SESSION_USERログオン時のデータベース・ユーザーの名前。エンタープライズ・ユーザーの場合、スキーマを戻します。その他のユーザーの場合、データベース・ユーザー名を戻します。この値は、セッションの存続期間中は同じです。
SESSION_USERIDログオン時のデータベース・ユーザーの識別子。
SESSIONID監査セッション識別子を戻します。この属性を分散SQL文で使用することはできません。
SIDセッションID。
TERMINAL現行のセッションのクライアントに対するオペレーティング・システムの識別子を戻します。


以上、OracleのSYS_CONTEXT関数を使ってサーバー情報を取得する方法について解説しました。