ここでは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')
 | 
以下はSYS_CONTEXT関数のパラメータに「NLS_SORT」を指定してソート基準を取得する例です。
SELECT SYS_CONTEXT('USERENV', 'NLS_SORT') FROM DUAL;
SYS_CONTEXT('USERENV','NLS_SORT')
 | 
以下は主要なSYS_CONTEXT関数のパラメータです。
| パラメータ | 説明 | 
|---|---|
| CURRENT_SCHEMA | 現在アクティブなデフォルトのスキーマの名前。 | 
| CURRENT_SCHEMAID | 現在アクティブなデフォルトのスキーマの識別子。 | 
| CURRENT_USER | 現在アクティブな権限を持つデータベース・ユーザー名。 | 
| CURRENT_USERID | 権限が現在アクティブになっているデータベース・ユーザーの識別子。 | 
| DB_DOMAIN | DB_DOMAIN初期化パラメータで指定されたデータベースのドメインを戻します。 | 
| DB_NAME | DB_NAME初期化パラメータで指定されたデータベース名を戻します。 | 
| DB_UNIQUE_NAME | DB_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_SORT | BINARYまたは言語ソート基準を戻します。 | 
| NLS_TERRITORY | 現行のセッションの地域を戻します。 | 
| OS_USER | データベース・セッションを開始するクライアント・プロセスのオペレーティング・システム・ユーザー名を戻します。 | 
| SERVER_HOST | インスタンスを実行しているマシンのホスト名。 | 
| SESSION_USER | ログオン時のデータベース・ユーザーの名前。エンタープライズ・ユーザーの場合、スキーマを戻します。その他のユーザーの場合、データベース・ユーザー名を戻します。この値は、セッションの存続期間中は同じです。 | 
| SESSION_USERID | ログオン時のデータベース・ユーザーの識別子。 | 
| SESSIONID | 監査セッション識別子を戻します。この属性を分散SQL文で使用することはできません。 | 
| SID | セッションID。 | 
| TERMINAL | 現行のセッションのクライアントに対するオペレーティング・システムの識別子を戻します。 | 
以上、OracleのSYS_CONTEXT関数を使ってサーバー情報を取得する方法について解説しました。