プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
12cリリース1 (12.1)
B71278-13
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

SYS_CONTEXT

構文

sys_context.gifの説明が続きます。
図sys_context.gifの説明

用途

SYS_CONTEXTは、現在のコンテキストnamespaceに関連付けられたparameterの値を戻します。この関数は、SQL文とPL/SQL文の両方で使用できます。SYS_CONTEXTはローカルに実行する必要があります。

namespaceおよびparameterには、文字列、またはネームスペースまたは属性を指定する文字列に変換する式を指定できます。namespaceおよびparameterにリテラル引数を指定し、(SQL文で指定されたPL/SQLファンクション内ではなく)SQL文で明示的にSYS_CONTEXTを使用した場合は、SYS_CONTEXTファンクションを起動するコール元の各サイトで、SQL文の実行ごとに1回のみSYS_CONTEXTが評価されます。

コンテキストnamespaceはすでに作成されている必要があり、関連付けられたparameterおよびその値は、DBMS_SESSION.set_contextプロシージャを使用して設定されている必要があります。namespaceは有効なSQL識別子である必要があります。parameter名には、すべての文字列を指定できます。大/小文字は区別されず、長さは30バイト以下です。

戻り値のデータ型はVARCHAR2です。戻り値のデフォルトの最大サイズは256バイトです。オプションのlengthパラメータを指定して、このデフォルトを上書きできます。このパラメータは、NUMBERか、または暗黙的にNUMBERに変換可能な値である必要があります。有効な値の範囲は、1から4000バイトです。無効な値を指定すると、Oracle Databaseはその値を無視してデフォルト値を使用します。

Oracleは、次の組込みネームスペースを提供しています。


関連項目:

  • アプリケーション開発でのアプリケーション・コンテキスト機能の使用方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • ユーザー定義のコンテキスト・ネームスペースの作成方法については、「CREATE CONTEXT」を参照してください。

  • DBMS_SESSION.set_contextプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。


次の例では、データベースにログインしたユーザー名を戻します。

CONNECT OE
Enter password: password

SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') 
   FROM DUAL;

SYS_CONTEXT ('USERENV', 'SESSION_USER')
---------------------------------------
OE

次の例では、SESSION_ROLESデータ・ディクショナリ・ビューを問い合せて、セッションに対して現在有効なロールがRESOURCEのみであることを示します。その後で、SYS_CONTEXTファンクションを使用して、セッションに対してRESOURCEロールが現在有効であり、DBAロールが有効でないことを示します。

CONNECT OE
Enter password: password

SELECT role FROM session_roles;

ROLE
--------
RESOURCE

SELECT SYS_CONTEXT('SYS_SESSION_ROLES', 'RESOURCE')
  FROM DUAL

SYS_CONTEXT('SYS_SESSION_ROLES','RESOURCE')
--------------------------------------
TRUE

SELECT SYS_CONTEXT('SYS_SESSION_ROLES', 'DBA')
  FROM DUAL;

SYS_CONTEXT('SYS_SESSION_ROLES','DBA')
--------------------------------------
FALSE

注意:

この機能を簡単に実演する場合、これらの例では、通常デプロイされたシステムが使用するパスワード管理技術を実行しません。本番環境では、Oracle Databaseのパスワード管理ガイドラインに従って、サンプル・アカウントを無効にします。パスワード管理ガイドラインおよび他のセキュリティに関する推奨事項については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

次の例では、hr_appsの作成時に、コンテキストhr_appsに関連付けられたPL/SQLパッケージの属性group_noに対する値として設定されたグループ番号を戻します。

SELECT SYS_CONTEXT ('hr_apps', 'group_no') "User Group" 
   FROM DUAL;

表7-11 ネームスペースUSERENVの事前定義パラメータ

パラメータ 戻り値

ACTION

モジュール(アプリケーション名)内の位置を識別します。DBMS_APPLICATION_INFOパッケージまたはOCIを使用して設定します。

AUDITED_CURSORID

監査をトリガーによって実行したSQLのカーソルIDを戻します。このパラメータは、ファイングレイン監査環境では無効です。このパラメータをファイングレイン監査環境で指定すると、Oracle Databaseは常にNULLを戻します。

AUTHENTICATED_IDENTITY

認証で使用する識別を戻します。次のリストでは、ユーザーのタイプの後に、戻される値を示します。

  • Kerberos認証済のエンタープライズ・ユーザー: Kerberosプリンシパル名

  • Kerberos認証済の外部ユーザー: Kerberosプリンシパル名(スキーマ名と同一)

  • SSL認証済のエンタープライズ・ユーザー: ユーザーのPKI証明書のDN

  • SSL認証済の外部ユーザー: ユーザーのPKI証明書のDN

  • パスワード認証済のエンタープライズ・ユーザー: ニックネーム(ログイン名と同一)

  • パスワード認証済のデータベース・ユーザー: データベースのユーザー名(スキーマ名と同一)

  • OS認証済の外部ユーザー: 外部オペレーティング・システムのユーザー名

  • RADIUS認証済の外部ユーザー: スキーマ名

  • DN付きプロキシ: クライアントのOracle Internet Directory DN

  • 証明書付きプロキシ: クライアントの証明書DN

  • ユーザー名付きプロキシ: クライアントがローカル・データベースのユーザーの場合はデータベース・ユーザー名、クライアントがエンタープライズ・ユーザーの場合はニックネーム。

  • パスワード・ファイルを使用するSYSDBA/SYSOPER: ログイン名

  • OS認証を使用するSYSDBA/SYSOPER: オペレーティング・システムのユーザー名

AUTHENTICATION_DATA

ログイン・ユーザーの認証に使用されるデータを戻します。X.503認証セッションでは、このフィールドはHEX2形式での認証のコンテキストを戻します。

注意: 構文のlengthパラメータを使用して、AUTHENTICATION_DATA属性の戻り値を変更できます。最大4000までの値を指定できます。この属性は、Oracle Databaseがこのような変更を実行するUSERENVの唯一の属性です。

AUTHENTICATION_METHOD

認証方式を戻します。次に、ユーザー・タイプの後に返される方式を続けて示します。

  • パスワード認証済のエンタープライズ・ユーザー、ローカル・データベースのユーザー、またはパスワード・ファイルを使用するSYSDBA/SYSOPER(パスワードを使用するユーザー名付きのプロキシ): PASSWORD

  • Kerberos認証済のエンタープライズ・ユーザーまたは外部ユーザー: KERBEROS

  • SSL認証済のエンタープライズ・ユーザーまたは外部ユーザー: SSL

  • RADIUS認証済の外部ユーザー: RADIUS

  • OS認証済の外部ユーザーまたはSYSDBA/SYSOPER: OS

  • 証明書付きプロキシ、DN、またはパスワードを使用しないユーザー名: NONE

  • バックグラウンド・プロセス(ジョブ・キュー・スレーブ・プロセス): JOB

  • パラレル問合せスレーブ・プロセス: PQ_SLAVE

認証方式がパスワード、KerberosまたはSSLの場合、IDENTIFICATION_TYPEを使用して外部ユーザーとエンタープライズ・ユーザーを区別できます。

BG_JOB_ID

現行のセッションがOracle Databaseのバックグラウンド・プロセスで確立された場合、そのセッションのジョブIDを戻します。セッションがバックグラウンド・プロセスで確立されていない場合は、NULLを戻します。

CDB_NAME

マルチテナント・コンテナ・データベース(CDB)に接続しているときに問合せが実行されると、CDBの名前を戻します。それ以外の場合は、nullを戻します。

CLIENT_IDENTIFIER

アプリケーションによって設定された識別子を、DBMS_SESSION.SET_IDENTIFIERプロシージャ、OCI属性OCI_ATTR_CLIENT_IDENTIFIERまたはOracle Dynamic Monitoring Service (DMS)を使用して戻します。この属性は、同じデータベース・ユーザーとして認証される複数の軽量アプリケーション・ユーザーを識別するために、様々なデータベース・コンポーネントによって使用されます。

CLIENT_INFO

DBMS_APPLICATION_INFOパッケージを使用するアプリケーションが格納できる64バイトまでのユーザー・セッション情報を戻します。

CLIENT_PROGRAM_NAME

データベース・セッションに使用されるプログラムの名前。

CON_ID

CDBに接続しているときに問合せが実行されると、現在のコンテナIDを戻します。それ以外の場合は0を戻します。

CON_NAME

CDBに接続しているときに問合せが実行されると、現在のコンテナ名を戻します。それ以外の場合は、DB_NAME初期化パラメータで指定されたデータベースの名前を戻します。

CURRENT_BIND

ファイングレイン監査のバインド変数。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。

CURRENT_EDITION_ID

現行のエディションの識別子。

CURRENT_EDITION_NAME

現行のエディションの名前。

CURRENT_SCHEMA

現在アクティブなデフォルトのスキーマの名前。この値は、セッションの存続期間中にALTER SESSION SET CURRENT_SCHEMA文を使用して変更できます。また、この値は、セッションの存続期間中に、アクティブな定義者権限オブジェクトの所有者を反映するために変更することもできます。この値をビュー定義の本体で直接使用すると、そのビューを使用しているカーソルを実行するときに使用されるデフォルトのスキーマが戻されます。定義者権限としてカーソルで使用されるビューは考慮されません。

注意: すべての種類(ログオン・トリガーを除く)のストアドPL/SQLユニット内から、SQL文ALTER SESSION SET CURRENT_SCHEMAを発行しないようにしてください。

CURRENT_SCHEMAID

現在アクティブなデフォルトのスキーマの識別子。

CURRENT_SQL

CURRENT_SQLn

CURRENT_SQLは、ファイングレイン監査イベントをトリガーによって実行した現行のSQLの最初の4KBを戻します。CURRENT_SQLn属性は、後続の4KBずつを戻します。nは、1から7(1および7を含む)の整数です。CURRENT_SQL1は4から8KB、CURRENT_SQL2は8から12KBのように戻します。これらの属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。

CURRENT_SQL_LENGTH

ファイングレイン監査または行レベルのセキュリティ(RLS)ポリシーのファンクションまたはイベント・ハンドラをトリガーする現行のSQL文の長さ。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。

CURRENT_USER

現在アクティブな権限を持つデータベース・ユーザー名。これは、Real Application Securityセッションがアタッチまたはデタッチされるときや、アクティブな定義者権限オブジェクトの所有者を反映するために、データベース・セッション中に変化することがあります。定義者権限オブジェクトがアクティブでない場合、CURRENT_USERSESSION_USERと同じ値を戻します。この値をビュー定義の本体で直接使用すると、そのビューを使用しているカーソルを実行しているユーザーが戻されます。定義者権限としてカーソルで使用されるビューは考慮されません。エンタープライズ・ユーザーの場合、スキーマを返します。Real Application Securityユーザーが現在アクティブな場合は、ユーザーXS$NULLが返されます。

関連項目: ユーザーXS$NULLの詳細は、『Oracle Database 2日でセキュリティ・ガイド』を参照してください。

CURRENT_USERID

権限が現在アクティブになっているデータベース・ユーザーの識別子。

DATABASE_ROLE

USERENVネームスペースでSYS_CONTEXTファンクションを使用するデータベース・ロール。ロールは、PRIMARYPHYSICAL STANDBYLOGICAL STANDBYSNAPSHOT STANDBYのいずれかです。

DB_DOMAIN

DB_DOMAIN初期化パラメータで指定されたデータベースのドメインを戻します。

DB_NAME

DB_NAME初期化パラメータで指定されたデータベース名を戻します。

DB_SUPPLEMENTAL_LOG_LEVEL

サプリメンタル・ロギングが有効になっている場合は、有効なサプリメンタル・ロギング・レベルのリストが含まれている文字列を返します。可能な値は、ALL_COLUMNFOREIGN_KEYMINIMALPRIMARY_KEYPROCEDURALおよびUNIQUE_INDEXです。サプリメンタル・ロギングが有効でない場合は、NULLを返します。

DB_UNIQUE_NAME

DB_UNIQUE_NAME初期化パラメータで指定されたデータベース名を戻します。

DBLINK_INFO

データベース・リンク・セッションのソースを戻します。具体的には、次の書式の文字列を戻します。

SOURCE_GLOBAL_NAME=dblink_src_global_name, DBLINK_NAME=dblink_name, SOURCE_AUDIT_SESSIONID=dblink_src_audit_sessionid

それぞれの意味は、次のとおりです。

  • dblink_src_global_name: ソース・データベースの一意のグローバル名

  • dblink_name: ソース・データベースでのデータベース・リンクの名前

  • dblink_src_audit_sessionid: dblink_nameを使用してリモート・データベースへの接続を開始したソース・データベースでのセッションの監査セッションID

ENTRYID

現行の監査エントリ番号を戻します。監査エントリIDの順序は、ファイングレイン監査レコードと通常の監査レコードで共通です。この属性を分散SQL文で使用することはできません。正しい監査エントリ識別子は、標準またはファイングレイン監査の監査ハンドラを介してのみ参照できます。

ENTERPRISE_IDENTITY

ユーザーのエンタープライズ全体の識別を戻します。

  • エンタープライズ・ユーザーの場合: Oracle Internet Directory DN。

  • 外部ユーザーの場合: 外部識別(Kerberosプリンシパル名、RADIUSスキーマ名、OSユーザー名、証明書DN)。

  • ローカル・ユーザーおよびSYSDBA/SYSOPERログインの場合: NULL

属性の値はプロキシ方式によって異なります。

  • DN付きプロキシの場合: クライアントのOracle Internet Directory DN

  • 証明書付きプロキシの場合: クライアントの証明書DN(外部ユーザー)、Oracle Internet Directory DN(グローバル・ユーザー)

  • ユーザー名付きプロキシの場合: クライアントがエンタープライズ・ユーザーの場合はOracle Internet Directory DN、クライアントがローカル・データベースのユーザーの場合はNULL。

FG_JOB_ID

DBMS_JOBパッケージを使用して作成されたジョブ内から問い合せた場合: 現在のセッションがクライアントのフォアグラウンド・プロセスで確立されているときには、現在のセッションのジョブIDが返されます。セッションがフォアグラウンド・プロセスで確立されていない場合は、NULLを戻します。

それ以外の場合は0を戻します。

GLOBAL_CONTEXT_MEMORY

コンテキストへのグローバルなアクセスによって、システム・グローバル領域で使用された数値を戻します。

GLOBAL_UID

エンタープライズ・ユーザー・セキュリティ(EUS)ログインの場合は、Oracle Internet Directoryからグローバル・ユーザーIDを戻します。その他のすべてのログインの場合は、NULLを戻します。

HOST

接続中のクライアントのホスト・マシン名を戻します。

IDENTIFICATION_TYPE

データベースでユーザーのスキーマを作成した方法を戻します。特に、CREATE/ALTER USER構文に、IDENTIFIED句が反映されます。次に、スキーマ作成時に使用される構文の後に返される識別タイプを続けて示します。

  • IDENTIFIED BY password: LOCAL

  • IDENTIFIED EXTERNALLY: EXTERNAL

  • IDENTIFIED GLOBALLY: GLOBAL SHARED

  • IDENTIFIED GLOBALLY AS DN: GLOBAL PRIVATE

INSTANCE

現行のインスタンスのインスタンス識別番号を戻します。

INSTANCE_NAME

インスタンス名。

IP_ADDRESS

接続中のクライアントのマシンのIPアドレスを戻します。クライアントとサーバーが同じマシン上にあり、接続にIPv6アドレスが使用されている場合は、::1が戻されます。

IS_APPLY_SERVER

ロジカル・スタンバイ・データベースでSQL Applyサーバーから問合せが実行された場合は、TRUEを戻します。それ以外の場合はFALSEを戻します。

IS_DG_ROLLING_UPGRADE

DBMS_ROLLINGパッケージを使用して開始された、Data Guard構成内のデータベース・ソフトウェアのローリング・アップグレードがアクティブの場合には、TRUEを戻します。それ以外の場合はFALSEを戻します。

ISDBA

オペレーティング・システムまたはパスワード・ファイルによって、ユーザーがDBA権限を持っていると認証された場合、TRUEを戻します。

LANG

言語名の略称を戻します。これは、既存の'LANGUAGE'パラメータを短縮したものです。

LANGUAGE

現行のセッションで使用している言語(language)および地域(territory)を、データベース・キャラクタ・セット(character set)も含めて次の書式で戻します。

language_territory.characterset

MODULE

DBMS_APPLICATION_INFOパッケージまたはOCIを使用して設定されたアプリケーション名(モジュール)を戻します。

NETWORK_PROTOCOL

接続文字列の'PROTOCOL=protocol'の部分で指定された、通信に使用されるネットワーク・プロトコルを戻します。

NLS_CALENDAR

現行のセッションの現行のカレンダを戻します。

NLS_CURRENCY

現行のセッションの通貨を戻します。

NLS_DATE_FORMAT

セッションの日付書式を戻します。

NLS_DATE_LANGUAGE

日付の表示に使用される言語を戻します。

NLS_SORT

BINARYまたは言語ソート基準を戻します。

NLS_TERRITORY

現行のセッションの地域を戻します。

ORACLE_HOME

Oracleホーム・ディレクトリのフル・パス名。

OS_USER

データベース・セッションを開始するクライアント・プロセスのオペレーティング・システム・ユーザー名を戻します。

PLATFORM_SLASH

プラットフォームのパス区切り文字として使用されるスラッシュ(「/」)文字。

POLICY_INVOKER

行レベルのセキュリティ(RLS)・ポリシーのファンクションの実行者。

PROXY_ENTERPRISE_IDENTITY

プロキシ・ユーザーがエンタープライズ・ユーザーの場合に、Oracle Internet Directory DNを戻します。

PROXY_USER

SESSION_USERのかわりに現行のセッションを開いたデータベース・ユーザー名を戻します。

PROXY_USERID

SESSION_USERのかわりに現行のセッションを開いたデータベース・ユーザーのIDを戻します。

SCHEDULER_JOB

現在のセッションがフォアグラウンド・ジョブまたはバックグラウンド・ジョブに属している場合は、Yを戻します。それ以外の場合はNを戻します。

SERVER_HOST

インスタンスを実行しているマシンのホスト名。

SERVICE_NAME

任意のセッションで接続しているサービスの名前を戻します。

SESSION_EDITION_ID

セッション・エディションの識別子。

SESSION_EDITION_NAME

セッション・エディションの名前。

SESSION_USER

セッション・ユーザー(ログオンしたユーザー)の名前。これは、Real Application Securityセッションがアタッチまたはデタッチされると、データベース・セッション中に変化することがあります。エンタープライズ・ユーザーの場合、スキーマを戻します。その他のユーザーの場合、データベース・ユーザー名を戻します。現在のデータベース・セッションにReal Application Securityがアタッチされている場合は、ユーザーXS$NULLが返されます。

関連項目: ユーザーXS$NULLの詳細は、『Oracle Database 2日でセキュリティ・ガイド』を参照してください。

SESSION_USERID

セッション・ユーザー(ログオンしたユーザー)のID。

SESSIONID

監査セッション識別子を戻します。この属性を分散SQL文で使用することはできません。

SID

セッションID。

STATEMENTID

文の監査の識別子を戻します。STATEMENTIDは、任意のセッションで監査されたSQL文の番号を示します。この属性を分散SQL文で使用することはできません。正しい文の監査の識別子は、標準またはファイングレイン監査の監査ハンドラを介してのみ参照できます。

TERMINAL

現行のセッションのクライアントに対するオペレーティング・システムの識別子を戻します。分散SQL文では、この属性はローカル・セッションの識別子を戻します。分散環境では、リモートのSELECTに対してのみこのオプションを使用でき、リモートのINSERTUPDATEまたはDELETEには使用できません。(このパラメータの戻り値の長さはオペレーティング・システムによって異なります。)

UNIFIED_AUDIT_SESSIONID

統合監査または混合モード監査を使用するデータベースに接続中に問い合せた場合、統合監査セッションIDを戻します。

従来の監査を使用するデータベースに接続中に問い合せた場合、nullを戻します。

注意: このパラメータは、Oracle Database 12cリリース1(12.1.0.2)以上で使用できます。