プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CREATE CONTEXT

用途

CREATE CONTEXT文を使用すると、次の操作を実行できます。

  • コンテキスト(アプリケーションを検証および保護するアプリケーション定義の一連の属性)のネームスペースを作成します。

  • ネームスペースを、コンテキストを設定する外部作成パッケージと関連付けます。

専用パッケージのDBMS_SESSION.SET_CONTEXTプロシージャを使用して、コンテキスト属性を設定または再設定できます。


関連項目:

  • コンテキストについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

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


前提条件

コンテキスト・ネームスペースを作成する場合、CREATE ANY CONTEXTシステム権限が必要です。

構文

create_context::=

create_context.gifの説明が続きます。
図「create_context.gif」の説明

セマンティクス

OR REPLACE

OR REPLACEを指定すると、異なるパッケージを使用して既存のコンテキスト・ネームスペースを再定義できます。

namespace

作成または変更するコンテキスト・ネームスペース名を指定します。コンテキスト・ネームスペースは、常にスキーマSYSに格納されます。


関連項目:

コンテキスト・ネームスペースのネーミングに関するガイドラインは、「データベース・オブジェクトのネーミング規則」を参照してください。

schema

packageを所有するスキーマを指定します。schemaを指定しない場合、Oracle Databaseは現行のスキーマを使用します。

package

ユーザー・セッションのネームスペースに基づくコンテキスト属性を設定または再設定するPL/SQLパッケージを指定します。

柔軟に設計できるように、Oracle Databaseは、コンテキスト作成時のスキーマの存在またはパッケージの妥当性を検証しません。

INITIALIZED句

INITIALIZED句を使用すると、コンテキスト・ネームスペースを初期化するOracle Database以外のエンティティを指定できます。

EXTERNALLY EXTERNALLYを使用すると、セッション確立時にOCIインタフェースを使用してネームスペースを初期化できます。


関連項目:

OCIを使用したセッション確立の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

GLOBALLY GLOBALLYを指定すると、グローバル・ユーザーがデータベースへ接続するときに、LDAPディレクトリによってネームスペースを初期化できます。

セッション確立後、設定したPL/SQLパッケージのみがネームスペースのすべての属性に書込みを行うコマンドを発行することができます。


関連項目:

  • グローバルに初期化されるコンテキストの確立の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • LDAPディレクトリを介したデータベースへの接続の詳細は、『Oracle Internet Directory管理者ガイド』を参照してください。


ACCESSED GLOBALLY

この句を使用すると、namespaceに設定したすべてのアプリケーション・コンテキストによるインスタンス全体へのアクセスを許可できます。この設定によって、複数のセッションがアプリケーション属性を共有できます。

アプリケーション・コンテキストの作成例: この例では、人事管理アプリケーションを検証および保護するPL/SQLパッケージemp_mgmtを使用します。このパッケージを作成する例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。次の文は、コンテキスト・ネームスペースhr_contextを作成し、emp_mgmtパッケージに関連付けます。

CREATE CONTEXT hr_context USING emp_mgmt;

SYS_CONTEXTファンクションを使用して、このコンテキストに基づいて、データ・アクセスを制御できます。たとえば、emp_mgmtパッケージで、特定の部門識別子として、属性department_idが定義されているとします。次のコマンドを実行し、department_idの値に基づいてアクセスを制限するビューを作成して、employees実表を保護できます。

CREATE VIEW hr_org_secure_view AS
   SELECT * FROM employees
   WHERE department_id = SYS_CONTEXT('hr_context', 'department_id');

関連項目:

アプリケーション・コンテキストを使用したユーザー情報の取得の詳細は、「SYS_CONTEXT」および『Oracle Databaseセキュリティ・ガイド』を参照してください。