構文
用途
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は、次の組込みネームスペースを提供しています。
USERENV
: 現在のセッションを説明します。ネームスペースUSERENV
の事前定義パラメータについては、表7-11を参照してください。
関連項目:
|
例
次の例では、データベースにログインしたユーザー名を戻します。
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の事前定義パラメータ
パラメータ | 戻り値 |
---|---|
|
モジュール(アプリケーション名)内の位置を識別します。 |
|
監査をトリガーによって実行したSQLのカーソルIDを戻します。このパラメータは、ファイングレイン監査環境では無効です。このパラメータをファイングレイン監査環境で指定すると、Oracle Databaseは常にNULLを戻します。 |
|
認証で使用する識別を戻します。次のリストでは、ユーザーのタイプの後に、戻される値を示します。
|
|
ログイン・ユーザーの認証に使用されるデータを戻します。X.503認証セッションでは、このフィールドはHEX2形式での認証のコンテキストを戻します。 注意: 構文の |
|
認証方式を戻します。次に、ユーザー・タイプの後に返される方式を続けて示します。
認証方式がパスワード、KerberosまたはSSLの場合、 |
|
現行のセッションがOracle Databaseのバックグラウンド・プロセスで確立された場合、そのセッションのジョブIDを戻します。セッションがバックグラウンド・プロセスで確立されていない場合は、NULLを戻します。 |
|
マルチテナント・コンテナ・データベース(CDB)に接続しているときに問合せが実行されると、CDBの名前を戻します。それ以外の場合は、nullを戻します。 |
|
アプリケーションによって設定された識別子を、 |
|
|
|
データベース・セッションに使用されるプログラムの名前。 |
|
CDBに接続しているときに問合せが実行されると、現在のコンテナIDを戻します。それ以外の場合は0を戻します。 |
|
CDBに接続しているときに問合せが実行されると、現在のコンテナ名を戻します。それ以外の場合は、 |
|
ファイングレイン監査のバインド変数。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。 |
|
現行のエディションの識別子。 |
|
現行のエディションの名前。 |
|
現在アクティブなデフォルトのスキーマの名前。この値は、セッションの存続期間中に 注意: すべての種類(ログオン・トリガーを除く)のストアドPL/SQLユニット内から、SQL文 |
|
現在アクティブなデフォルトのスキーマの識別子。 |
|
|
|
ファイングレイン監査または行レベルのセキュリティ(RLS)ポリシーのファンクションまたはイベント・ハンドラをトリガーする現行のSQL文の長さ。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。 |
|
現在アクティブな権限を持つデータベース・ユーザー名。これは、Real Application Securityセッションがアタッチまたはデタッチされるときや、アクティブな定義者権限オブジェクトの所有者を反映するために、データベース・セッション中に変化することがあります。定義者権限オブジェクトがアクティブでない場合、 関連項目: ユーザー |
|
権限が現在アクティブになっているデータベース・ユーザーの識別子。 |
|
|
|
|
|
|
|
サプリメンタル・ロギングが有効になっている場合は、有効なサプリメンタル・ロギング・レベルのリストが含まれている文字列を返します。可能な値は、 |
|
|
|
データベース・リンク・セッションのソースを戻します。具体的には、次の書式の文字列を戻します。
SOURCE_GLOBAL_NAME=dblink_src_global_name, DBLINK_NAME=dblink_name, SOURCE_AUDIT_SESSIONID=
それぞれの意味は、次のとおりです。
|
|
現行の監査エントリ番号を戻します。監査エントリIDの順序は、ファイングレイン監査レコードと通常の監査レコードで共通です。この属性を分散SQL文で使用することはできません。正しい監査エントリ識別子は、標準またはファイングレイン監査の監査ハンドラを介してのみ参照できます。 |
|
ユーザーのエンタープライズ全体の識別を戻します。
属性の値はプロキシ方式によって異なります。
|
|
それ以外の場合は0を戻します。 |
|
コンテキストへのグローバルなアクセスによって、システム・グローバル領域で使用された数値を戻します。 |
|
エンタープライズ・ユーザー・セキュリティ(EUS)ログインの場合は、Oracle Internet Directoryからグローバル・ユーザーIDを戻します。その他のすべてのログインの場合は、NULLを戻します。 |
|
接続中のクライアントのホスト・マシン名を戻します。 |
|
データベースでユーザーのスキーマを作成した方法を戻します。特に、
|
|
現行のインスタンスのインスタンス識別番号を戻します。 |
|
インスタンス名。 |
|
接続中のクライアントのマシンのIPアドレスを戻します。クライアントとサーバーが同じマシン上にあり、接続にIPv6アドレスが使用されている場合は、 |
|
ロジカル・スタンバイ・データベースでSQL Applyサーバーから問合せが実行された場合は、 |
|
|
|
オペレーティング・システムまたはパスワード・ファイルによって、ユーザーがDBA権限を持っていると認証された場合、 |
|
言語名の略称を戻します。これは、既存の' |
|
現行のセッションで使用している言語(language)および地域(territory)を、データベース・キャラクタ・セット(character set)も含めて次の書式で戻します。 language_territory.characterset |
|
|
|
接続文字列の' |
|
現行のセッションの現行のカレンダを戻します。 |
|
現行のセッションの通貨を戻します。 |
|
セッションの日付書式を戻します。 |
|
日付の表示に使用される言語を戻します。 |
|
|
|
現行のセッションの地域を戻します。 |
|
Oracleホーム・ディレクトリのフル・パス名。 |
|
データベース・セッションを開始するクライアント・プロセスのオペレーティング・システム・ユーザー名を戻します。 |
|
プラットフォームのパス区切り文字として使用されるスラッシュ(「/」)文字。 |
|
行レベルのセキュリティ(RLS)・ポリシーのファンクションの実行者。 |
|
プロキシ・ユーザーがエンタープライズ・ユーザーの場合に、Oracle Internet Directory DNを戻します。 |
|
|
|
|
|
現在のセッションがフォアグラウンド・ジョブまたはバックグラウンド・ジョブに属している場合は、 |
|
インスタンスを実行しているマシンのホスト名。 |
|
任意のセッションで接続しているサービスの名前を戻します。 |
|
セッション・エディションの識別子。 |
|
セッション・エディションの名前。 |
|
セッション・ユーザー(ログオンしたユーザー)の名前。これは、Real Application Securityセッションがアタッチまたはデタッチされると、データベース・セッション中に変化することがあります。エンタープライズ・ユーザーの場合、スキーマを戻します。その他のユーザーの場合、データベース・ユーザー名を戻します。現在のデータベース・セッションにReal Application Securityがアタッチされている場合は、ユーザー 関連項目: ユーザー |
|
セッション・ユーザー(ログオンしたユーザー)のID。 |
|
監査セッション識別子を戻します。この属性を分散SQL文で使用することはできません。 |
|
セッションID。 |
|
文の監査の識別子を戻します。 |
|
現行のセッションのクライアントに対するオペレーティング・システムの識別子を戻します。分散SQL文では、この属性はローカル・セッションの識別子を戻します。分散環境では、リモートの |
|
統合監査または混合モード監査を使用するデータベースに接続中に問い合せた場合、統合監査セッションIDを戻します。 従来の監査を使用するデータベースに接続中に問い合せた場合、nullを戻します。 注意: このパラメータは、Oracle Database 12cリリース1(12.1.0.2)以上で使用できます。 |