ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

124 DBMS_RLMGR


注意:

この機能は、Oracle Databaseリリース11.2では非推奨で、リリース12.1では廃止されています。廃止の詳細は、My Oracle Support NoteID 1244535.1を参照してください。


DBMS_RLMGRパッケージには、ルール・マネージャを使用してルールおよびルール・セッションを作成および管理する様々なプロシージャが含まれています。


関連項目:

詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_RLMGRの使用方法

この項では、ルール・マネージャのDBMS_RLMGRパッケージの使用に関連する項目について説明します。


セキュリティ・モデル

Oracle Databaseインストールによって、catrul.sqlスクリプトが実行され、DBMS_RLMGRパッケージがロードされて、必要なルール・マネージャのスキーマ・オブジェクトがEXFSYSスキーマに作成されます。

DBMS_RLMGRは、EXFSYS所有のパッケージであり、AUTHID CURRENT_USERでコンパイルされます。無名PL/SQLブロックからコールされたすべてのDBMS_RLMGRサブプログラムは、現行のユーザーの権限を使用して実行されます。

ユーザーには、このパッケージを使用するために、CONNECTロールとRESOURCEロール、DBMS_LOCKに対するEXECUTE権限、およびCREATE VIEW権限が付与されている必要があります。

ルール・クラスを正常に作成するには、ビュー、オブジェクト・タイプ、表、パッケージおよびプロシージャを作成するための十分な権限が必要です。

ルール・クラスの所有者は、ルール・クラスの削除、ルール・クラス内のルールの処理、ルール・クラスに対するルールの追加と削除を実行する権限を常に所有しています。ルール・クラスの所有者のみがルール・クラスを削除でき、この権限は、他のユーザーには付与できません。ルール・クラスの所有者が持つルール・クラスに対する権限は取り消すことができません。

ルール・クラスの所有者ではないユーザーには、特定のタスクを実行するために、適切なタイプの権限が付与されている必要があります。付与できる権限のタイプは、次のとおりです。

  • PROCESS RULES: ルール・クラスに対するPROCESS RULES権限を持つユーザーは、PROCESS_RULESプロシージャまたはADD_EVENTプロシージャを使用して、そのルール・クラスのルールを処理できます。また、この権限を持つユーザーは、対応するルール・クラスの結果ビューを検索できます。

  • ADD RULE: ルール・クラスに対するADD RULE権限を持つユーザーは、そのルール・クラスにルールを追加できます。また、ルール・クラスの所有者は、1つのルール・クラス表に対するINSERT権限を他のユーザーに付与することもできます。

  • DELETE RULE: ルール・クラスに対するDELETE RULE権限を持つユーザーは、そのルール・クラスからルールを削除できます。また、ルール・クラスの所有者は、1つのルール・クラス表に対するDELETE権限を他のユーザーに付与することもできます。

  • ALL: ルール・クラスに対するALL権限を付与すると、そのルール・クラスに対する前述のすべての権限がユーザーに付与されます。

ユーザーがルール・クラスの結果ビューを使用するには、対応するルール・クラスに関連付けられているプリミティブ・イベント・タイプに対するEXECUTE権限が必要です。

ルール・クラスの所有者は、(ルール・クラスと同じ名前の)ルール・クラス表に対してSQL INSERT文を使用してルールを追加できます。また、ルール・クラスの所有者は、ルール・クラス表に対する直接DML権限を他のユーザーに付与することもできます。スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスにルールを追加するために、ルール・クラスに対するADD RULE権限が必要です。

ルール・クラスの所有者は、1つのルール・クラス表に対するSQL DELETE文を使用してルールを削除できます。スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスに対するDELETE RULE権限が必要です。

スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスに対するPROCESS RULES権限が必要です。

DBMS_RLMGR.SYNC_TEXT_INDEXESプロシージャを使用してテキスト索引を正常に同期化するには、CTX_DDLパッケージに対するEXECUTE権限が必要です。

ルール・クラスに対する現行のユーザーの権限は、USER_RLMGR_PRIVILEGESビューにリストされます。


ルール・マネージャのサブプログラムの要約

表124-1に、DBMS_RLMGRパッケージのサブプログラムを示します。

特に明記されていないかぎり、DBMS_RLMGRパッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別が必要な場合は、値を二重引用符で囲んでください。

表124-1 DBMS_RLMGRパッケージのサブプログラム

サブプログラム 説明

ADD_ELEMENTARY_ATTRIBUTEプロシージャ


指定の属性をイベント構造および式フィルタの属性セットに追加します。

ADD_EVENTプロシージャ


アクティブなセッションのルール・クラスにイベントを追加します。

ADD_FUNCTIONSプロシージャ


イベント構造および式フィルタの属性セットを含むファンクションの承認リストに、ファンクション、タイプまたはパッケージを追加します。

ADD_RULEプロシージャ


ルール・クラスにルールを追加します。

CONDITION_REFファンクション


コンポジット・イベントのルール条件からプリミティブ・ルール条件参照を取り出します。

CONSUME_EVENTファンクション


イベント識別子を使用してイベントをコンシュームし、対応するルールをアクションの実行用に準備します。

CONSUME_PRIM_EVENTSファンクション


1つ以上のプリミティブ・イベントを悉無律セマンティクスに基づいてコンシュームします。

CREATE_CONDITIONS_TABLEプロシージャ


同一または異なるルール・クラスからの複数のルールで共有可能なプリミティブ・ルール条件のリポジトリを作成します。

CREATE_EVENT_STRUCTプロシージャ


イベント構造を作成します。

CREATE_EXPFIL_INDEXESプロシージャ


デフォルトの索引が削除されている場合に、ルール・クラスの式フィルタ索引を作成します。

CREATE_INTERFACEプロシージャ


ルール・クラスを直接操作するためのルール・クラス・インタフェースのパッケージを作成します。

CREATE_RULE_CLASSプロシージャ


ルール・クラスを作成します。

DELETE_RULEプロシージャ


ルール・クラスのルールを削除します。

DROP_CONDITIONS_TABLEプロシージャ


条件表を削除します。

DROP_EVENT_STRUCTプロシージャ


イベント構造を削除します。

DROP_EXPFIL_INDEXESプロシージャ


ルール条件の式フィルタ索引を削除します。

DROP_INTERFACEプロシージャ


ルール・クラス・インタフェースのパッケージを削除します。

DROP_RULE_CLASSプロシージャ


ルール・クラスを削除します。

EXTEND_EVENT_STRUCTプロシージャ


プリミティブ・イベント構造に属性を追加します。

GET_AGGREGATE_VALUEファンクション


コレクション・イベントに対して計算された集計値を取り出します。

GRANT_PRIVILEGEプロシージャ


ルール・クラスに対する権限を他のユーザーに付与します。

PROCESS_RULESプロシージャ


指定したイベントのルールを処理します。

PURGE_EVENTSプロシージャ


ルール・クラスに関連付けられているすべてのイベントを削除し、いくつかのイベントに一致するルールに関する状態情報をパージすることによって、ルール・クラスをリセットします。

RESET_SESSIONプロシージャ


データベース・セッション内で、新しいルール・セッションを開始します。

REVOKE_PRIVILEGEプロシージャ


ルール・クラスに対するユーザー権限を取り消します。

SYNC_TEXT_INDEXESプロシージャ


ルール条件のCONTAINS演算子に関連する述語を処理するために定義される索引を同期化します。



ADD_ELEMENTARY_ATTRIBUTEプロシージャ

このプロシージャは、指定の属性をイベント構造(式フィルタの属性セット)に追加します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

指定の要素属性を属性セットに追加する場合:

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              attr_type      IN   VARCHAR2,
              attr_defvl     IN   VARCHAR2 default NULL);
 

表の別名である要素属性を識別して、イベント構造に追加する場合:

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              tab_alias      IN   rlm$table_alias);

属性セットへのテキスト属性の追加を許可する場合:

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              attr_type      IN   VARCHAR2,
              text_pref      IN   EXF$TEXT);
 

パラメータ

表124-2 ADD_ELEMENTARY_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

event_struct

この属性を追加するイベント構造(属性セット)の名前。

attr_name

追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。

attr_type

属性のデータ・タイプ。この引数には、標準のSQLデータ・タイプ、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。

tab_alias

属性の別名を設定するデータベース表を識別するタイプ。

attr_defv1

要素属性のデフォルト値。

text_pref

LEXER、WORDLIST指定などのテキスト・プリファレンス。


使用上の注意

  • このプロシージャは、要素属性をイベント構造に追加します。イベント構造は、式フィルタの属性セットとして内部的に管理されます。最初に既存のオブジェクト・タイプから作成されたイベント構造には、他の属性は追加できません。

    式が格納されている列にすでに割り当てられている属性セットには、要素属性は追加できません(この属性セットは、ルール・クラスで使用されるイベント構造と同じです)。

  • 属性セット内の1つ以上またはすべての要素属性は、表の別名として使用できます。要素属性が表の別名である場合、その要素属性に割り当てられる値は、対応する表のROWIDです。表の別名属性が1つ以上ある属性セットは、既存のオブジェクト・タイプからは作成できません。表の別名の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。

  • 式が格納されている列にすでに割り当てられている属性セットには、要素属性は追加できません。

  • 要素属性の追加の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義に関する項を参照してください。

  • 関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_ATTRIBUTES

  • このプロシージャをtext_pref引数にバインドされたテキスト・プリファレンスとともに使用すると、属性セット内にテキスト属性が作成されます。このような属性のデータ・タイプは、VARCHAR2またはCLOBである必要があります。テキスト属性に対して指定されているプリファレンスは、属性のCONTAINS演算子に関連する述語を処理する場合に使用されます。有効なプリファレンスは、CTXRULE索引の作成に使用するPARAMETERS句で有効なプリファレンスです。構文については、『Oracle Textアプリケーション開発者ガイド』を参照してください。

次のコマンドでは、2つの要素属性が属性セットに追加されます。

BEGIN
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'HRAttrSet',
                       ATTR_NAME => 'HRREP',
                       attr_type => 'VARCHAR2'); 
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'HRAttrSet',
                       ATTR_NAME => 'DEPT',
                       TAB_ALIAS => RLM$TABLE_ALIAS('DEPT')); 
END;

次のコマンドでは、ホテルの予約(追加情報を含む)に関する属性セットが作成され、CLOBデータ・タイプのAddlInfo属性として示されます。このイベント構造に指定されているルール条件には、この属性に関するテキストの述語を含めることができます。

BEGIN
  DBMS_RLMGR.CREATE_EVENT_STRUCT (EVENT_STRUCT => 'AddFlight'); 
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'CustId',
                       ATTR_TYPE => 'NUMBER'); 
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'Type',
                       ATTR_TYPE => 'VARCHAR2(20)'); 
  . . . 
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'AddlInfo',
                       ATTR_TYPE => 'CLOB',
                       TEXT_PREF => EXF$TEXT('LEXER hotelreserv_lexer')); 
END;

ADD_EVENTプロシージャ

このプロシージャは、アクティブなルール・セッションのルール・クラスにプリミティブ・イベントを追加します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

プリミティブ・イベント・インスタンスの文字列表現をルール・クラスに追加します。

DBMS_RLMGR.ADD_EVENT (
   rule_class      IN VARCHAR2,
   event_inst      IN VARCHAR2,
   event_type      IN VARCHAR2 default null);

プリミティブ・イベント・インスタンスのAnyData表現をルール・クラスに追加します。

DBMS_RLMGR.ADD_EVENT (
   rule_class      IN VARCHAR2,
   event_inst      IN sys.AnyData);

パラメータ

表124-3 ADD_EVENTプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_inst

ルール・クラスに追加するイベント・インスタンスの文字列表現またはAnyData表現。

event_type

event_inst引数に割り当てられたイベント・インスタンスのタイプ(コンポジット・イベント用に構成されたルール・クラスに対してイベント・インスタンスの文字列表現を使用する場合)。


使用上の注意

  • このプロシージャは、アクティブなルール・セッション内のルール・クラスにプリミティブ・イベントまたは単純イベントを追加するために使用します。デフォルトでは、ルール・セッションはデータベース・セッションと同じです。オプションで、RESET_SESSIONまたはPROCESS_RULESプロシージャを使用して、複数の(連続する)ルール・セッションをデータベース・セッション内で開始できます。

  • ルール・クラスが(1つのみのプリミティブ・イベント構造で構成されている)単純イベント用に構成されている場合は、ADD_EVENTプロシージャのevent_type引数を無視できます。また、イベント・インスタンスをAnyData形式で渡す場合は、イベント・タイプ情報がAnyDataインスタンスに埋め込まれます。それ以外の場合は、ルール・クラスに追加するプリミティブ・イベント構造の名前をevent_type引数に割り当てる必要があります。

  • イベント・インスタンスが有効な場合、ADD_EVENTプロシージャは、ルール・クラスのルールを処理し、それらの結果を(ルール・クラスの作成時に構成される)ルール・クラスの結果ビューに取得します。これらの結果は、ルール・セッションが終了するまで保持されます。スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスに対するPROCESS RULES権限が必要です。追加情報については、「GRANT_PRIVILEGEプロシージャ」を参照してください。event_type引数に指定する値は、ルール・クラスの所有者のスキーマ内で常に解決され、スキーマ拡張した名前は使用できません。コンポジット・イベント構造が表の別名のプリミティブ・イベント・タイプで構成されている場合は、対応する表の名前をevent_type引数に割り当てる必要があります。

次のコマンドでは、2種類のプリミティブ・イベント(AddFlightおよびAddRentalCar)用に構成されているCompTravelPromoルール・クラスに2つのイベントが追加されます。

BEGIN
 DBMS_RLMGR.ADD_EVENT(rule_class => 'CompTravelPromo',
                     event_inst =>
                        AddFlight.getVarchar(987, 'Abcair', 'Boston',
                                         'Orlando', '01-APR-2003', '08-APR-2003'),
                     event_type => 'AddFlight');

DBMS_RLMGR.ADD_EVENT(rule_class => 'Scott.CompTravelPromo',
                     event_inst =>
                        AnyData.convertObject(
                                        AddRentalCar(987, 'Luxury', '03-APR-2003',
                                                     '08-APR-2003', NULL)));
END;/

ADD_FUNCTIONSプロシージャ

このプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージ、またはタイプをイベント構造(式ファイルの属性セット)に追加します。

構文

DBMS_RLMGR.ADD_FUNCTIONS (
   event_struct   IN   VARCHAR2,
   funcs_name     IN   VARCHAR2);

パラメータ

表124-4 ADD_FUNCTIONSプロシージャのパラメータ

パラメータ 説明

event_struct

ファンクションを追加するイベント構造の名前。

funcs_name

(ファンクションの集合を表す)ファンクション、パッケージまたはタイプの名前またはそのシノニム。


使用上の注意

  • デフォルトでは、属性セットによって、ルール条件で使用されるOracle Database提供のすべてのSQLファンクションを暗黙的に参照できます。式セットでユーザー定義ファンクションを参照する場合は、その式セットが属性セットに明示的に追加されている必要があります。

  • ADD_FUNCTIONSプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージまたはタイプを属性セットに追加します。新しい式または変更された式は、このリストを使用して有効性が検証されます。

  • スキーマ拡張を使用して、ファンクションまたはパッケージの名前を指定できます。スキーマ拡張を使用せずにファンクション名を指定した場合、ルール条件におけるこのような参照のみが有効であるとみなされます。対応するシノニムを属性セットに追加することによって、条件式を制限して、ファンクションまたはパッケージにシノニムを使用できます。これによって、他のスキーマに対する式セットの移植性が保持されます。

  • 属性セットにファンクションを追加する方法の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義に関する項を参照してください。

  • 関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_ASET_FUNCTIONS

次のコマンドでは、2つのファンクションが属性セットに追加されます。

BEGIN 
  DBMS_RLMGR.ADD_FUNCTIONS (attr_set   => 'Car4Sale', 
                             funcs_name => 'HorsePower');
  DBMS_RLMGR.ADD_FUNCTIONS (attr_set   => 'Car4Sale', 
                             funcs_name => 'Scott.CrashTestRating');
END;
/

ADD_RULEプロシージャ

このプロシージャは、ルール・クラスに新しいルールを追加します。

構文

DBMS_RLMGR.ADD_RULE (
   rule_class      IN  VARCHAR2,
   rule_id         IN  VARCHAR2,
   rule_cond       IN  VARCHAR2,
   actprf_nml      IN  VARCHAR2 DEFAULT NULL,
   actprf_vall     IN  VARCHAR2 DEFAULT NULL);

パラメータ

表124-5 ADD_RULEプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

rule_id

ルール・クラス内のルールの一意の識別子。

rule_cond

ルールの条件。条件では、ルール・クラスのイベント構造で定義された変数が使用されます。

actprf_nml

actprf_vall引数によって値が割り当てられるアクション・プリファレンス名のリスト。

actprf_vall

actprf_nml引数に割り当てられる名前リストに対するアクション・プリファレンス値のリスト。


使用上の注意

  • このプロシージャは、ルール・クラスに新しいルールを追加するために使用します。ADD_RULEプロシージャに渡されるルール条件は、ルール・クラスに関連付けられたイベント構造を使用して検証されます。アクション・プリファレンス名のリストは、ルール・クラスの作成時に構成されたアクション・プリファレンス・カテゴリのサブセットです。

  • スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスに対するADD RULE権限が必要です。詳細は、「GRANT_PRIVILEGEプロシージャ」を参照してください。

  • ルール・クラスの所有者が、(ルール・クラスと同じ名前の)ルール・クラス表に対してSQL INSERT文を使用してルールを追加することもできます。また、ルール・クラスの所有者は、ルール・クラス表に対する直接DML権限を他のユーザーに付与することもできます。


    注意:

    ADD_RULEプロシージャではなくSQL INSERT文を使用して新しいルールを追加する場合、ルール・クラスのAUTOCOMMITプロパティは無視されます。

  • ルール・クラス表の構造については、「CREATE_RULE_CLASSプロシージャ」を参照してください。

次のコマンドでは、ルール・クラスにルールが追加されます。

BEGIN
DBMS_RLMGR.ADD_RULE (
           rule_class => 'CompTravelPromo',
           rule_id => 'AB_AV_FL',
           rule_cond =>
             '<condition>
                 <and join="Flt.CustId = Car.CustId">
                    <object name="Flt">
                      Airline=''Abcair'' and ToCity=''Orlando''
                    </object>
                    <object name="Car">
                      CarType = ''Luxury''
                    </object>
                  </and>
               </condition>' ,
             actprf_nml => 'PromoType, OfferedBy',
             actprf_vall => '''RentalCar'', ''Acar''');
END;

適切な権限がある場合は、次のSQL INSERT文を使用してルールをルール・クラスに追加できます。

INSERT INTO CompTravelPromo (rlm$ruleid, rlm$rulecond, PromoType, OfferedBy)
  VALUES ('AB_AV_FL',
          '<condition>
             <and join="Flt.CustId = Car.CustId">
               <object name="Flt">
                   Airline=''Abcair'' and ToCity=''Orlando''
               </object>
               <object name="Car">
                   CarType = ''Luxury''
               </object>
             </and>
           </condition>',
          'RentalCar','Acar');

CONDITION_REFファンクション

このファンクションは、コンポジット・イベントのルール条件からプリミティブ・ルール条件参照を取り出します。

構文

DBMS_RLMGR.CONDITION_REF (
     rule_cond IN   VARCHAR2,
     eventnm   IN   VARCHAR2) 
  RETURN VARCHAR2;

パラメータ

表124-6 CONDITION_REFファンクションのパラメータ

パラメータ 説明

rule_cond

XML形式のルール条件。

eventnm

参照を取得するイベント名。


使用上の注意

  • ルート要素<condition>を持つXML形式のルール条件では、このファンクションは、特定のプリミティブ・イベントにおける共有条件式への参照を取り出します。

  • ルール・クラス表を操作する問合せでこのファンクションを使用すると、特定のプリミティブ・ルール条件への参照をすべて検索することができます。このような問合せを高速化するために、このファンクションのシグネチャを使用して、ルール・クラス表のrlm$rulecond列で1つ以上のファンクション索引を定義します。参照問合せの索引を使用する場合、eventnm引数に割り当てる値で大/小文字を区別する必要があります。

次のコマンドでは、ルール・クラス表とプリミティブ条件表が結合され、共有可能なプリミティブ条件への参照を持つすべてのルール条件が識別されます(問合せでは、rlm$rulecond列で定義されているファンクション索引を使用します)。この問合せでは、FlightConditions表に格納されている共有条件を参照するすべてのルール条件が識別されます。

select ctp.rlm$ruleid from CompTravelPromo ctp, FlightConditions fc
where dbms_rlmgr.condition_ref(ctp.rlm$rulecond, 'FLT') = fc.rlm$condid; 

CONSUME_EVENTファンクション

このファンクションは、イベントをコンシュームし、対応するルールをアクションの実行用に準備します。これは、アクション(ルールの実行)がコールバックによってではなく、ユーザーのアプリケーションによって行われる場合にのみ必要です。

構文

DBMS_RLMGR.CONSUME_EVENT (
   rule_class       IN VARCHAR2,
   event_ident      IN VARCHAR2) 
 RETURN NUMBER;

パラメータ

表124-7 CONSUME_EVENTファンクションのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_ident

対応するルール・クラスの結果ビュー(RULEベースのコンシューム・ポリシー用に構成されるルール・クラスの場合はアクション・コールバック・プロシージャの引数)から取得されるイベント識別子。


戻り値

このファンクションは、次の値を戻します。

  • 1 -- イベントが正常にコンシュームされた場合

  • 0 -- イベントが(継続時間ポリシーによって)期限切れになったか、またはこのコールの前に別のセッションによってコンシュームされた場合

使用上の注意

  • ルール・クラスのイベントに対してEXCLUSIVEコンシューム・ポリシーが設定されている場合、そのイベントは、一致するルール(アクション)の実行直後にシステムから削除する必要があります。PROCESS_RULESプロシージャをコールしてルール・アクションをルール・クラスのコールバック・プロシージャで実行する場合、イベントのコンシュームは、ルール・マネージャによって自動的に処理されます。ただし、ADD_EVENTプロシージャを使用して、イベントとルールの一致結果をルール・クラスの結果ビューに要求する場合は、適切なアクションを実行して、ルールの実行に使用するルールとイベントの組合せを正確に示す必要があります。CONSUME_EVENTファンクションは、ルールの実行に使用するイベントの一意な識別子が渡されると、必要なハウスキーピング・サービスを実行します。

  • 結果と一致するルール・クラスのフェッチと、ユーザーが開始するアクションの実行の間でタイム・ラグが発生する可能性があるため、アプリケーションでは、CONSUME_EVENTコールで正常にイベントがコンシュームされる場合にのみこのアクションを実行する必要があります。これによって、パラレル・セッションで同じイベントがコンシュームされる競合状態を回避できます。イベントが正常にコンシュームされると、このコールは1を戻します。その他の場合は、0(ゼロ)を戻します。戻り値が0(ゼロ)の場合、そのイベントは、別のセッションによってすでにコンシュームされているため、このセッションでは使用できないことを意味します。

  • CONSUME_EVENTファンクションは、EXCLUSIVEコンシューム・ポリシーで構成されているイベントを削除します。コンシューム・ポリシーで構成されているイベントに対しては何も行いません。

  • ルール・クラス・レベルで決定されるEXCLUSIVEおよびSHAREDコンシューム・ポリシーとは異なり、RULEコンシューム・ポリシーを使用して、ルールに基づいてイベントのコンシュームを決定します。つまり、ルールが一致した場合にイベントがシステムから削除されるようにルール・クラスのルールのサブセットを構成できます。同時に、その他のルール・セットでは、対応するアクションの実行後も、イベントをシステム内にそのまま残すこともできます。この場合、アプリケーション開発者が実装するアクション・コールバック・プロシージャは、(適切な引数で)CONSUME_EVENTファンクションをコールし、特定のルールに対するイベントを条件付きでコンシュームできます。RULEコンシューム・ポリシー用に構成されたルール・クラスについては、「CONSUME_PRIM_EVENTSファンクション」の使用方法に関する項も参照してください。

次のコマンドでは、ルールの実行で使用されるイベントが識別され、その識別子を使用してイベントがコンシュームされます。

var eventid VARCHAR(40);
var evtcnsmd NUMBER;

BEGIN
  SELECT rlm$eventid INTO :eventid FROM MatchingPromos WHERE rownum < 2;

  -- carry the required action for a rule matched by the above event --
  :evtcnsmd := DBMS_RLMGR.CONSUME_EVENT(rule_class  => 'TravelPromotion',
                                        event_ident => :eventid);
END;

CONSUME_PRIM_EVENTSファンクション

このファンクションは、RULEベースのコンシューム・ポリシーで構成されたルール・クラスの場合、悉無律セマンティクスに基づいて一連のプリミティブ・イベントをコンシュームします。

構文

DBMS_RLMGR.CONSUME_PRIM_EVENTS (
   rule_class       IN VARCHAR2,
   event_idents     IN RLM$EVENTIDS) 
 RETURN NUMBER;

パラメータ

表124-8 CONSUME_PRIM_EVENTSファンクションのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_ident

対応するルール・クラスの結果ビューまたはアクション・コールバック・プロシージャの引数から取得されたイベント識別子。


戻り値

このファンクションは、次の値を戻します。

  • 1 -- すべてのイベント(渡されたイベント識別子)が正常にコンシュームされた場合

  • 0 -- 1つ以上のプリミティブ・イベントをコンシュームできなかった場合

使用上の注意

  • ルール・クラスをRULEベースのコンシューム・ポリシー用に構成する場合は、CONSUME_PRIM_EVENTSファンクションを使用して、コンポジット・イベントを構成する1つ以上のプリミティブ・イベントをコンシュームします。この操作は、渡したすべてのイベントが有効で、コンシューム可能な場合にのみ正常に実行されます。ユーザーが開始するアクションは、CONSUME_PRIM_EVENTSコールの戻り値をチェックした後で実行する必要があります。

次のコマンドは、RULEコンシューム・ポリシー用に構成されたルール・クラスのアクション・コールバック・プロシージャの本体を示しています。ここでは、CONSUME_PRIM_EVENTSファンクションを使用して、一致するルールに対するアクションを実行する前にイベントをコンシュームする方法を示します。

create or replace procedure PromoAction (
      Flt        AddFlight, 
      Flt_EvtId  ROWID,    --- rowid for the flight primitive event
      Car        AddRentalCar, 
      Car_EvtId  ROWID, 
      rlm$rule   TravelPromotions%ROWTYPE) is 
  evtcnsmd   NUMBER; 
BEGIN
  evtcnsmd := DBMS_RLMGR.CONSUME_PRIM_EVENTS(
                    rule_class   => 'TravelPromotions',
                    event_idents => RLM$EVENTIDS(Flt_EvtId, Car_EvtId));

  if (evtcnsmd = 1) then 
    -- consume operation was successful; perform the action ---
    OfferPromotion (Flt.CustId, rlm$rule.PromoType, rlm$rule.OfferedBy);
  end if;
END;
/

CREATE_CONDITIONS_TABLEプロシージャ

このプロシージャは、同一または異なるルール・クラスからの複数のルールによって共有可能なプリミティブ・ルール条件のリポジトリである条件表を作成します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

条件表を作成して、プリミティブ・イベントに対して定義されている共有可能なプリミティブ条件を格納します。

DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
     cond_table    IN  VARCHAR2,
     pevent_struct IN  VARCHAR2,
     stg_clause    IN  VARCHAR2 DEFAULT NULL);

条件表を作成し、表の別名を使用して識別されるリレーショナル表に対して定義されている共有可能なプリミティブ条件を格納します。

DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
     cond_table    IN  VARCHAR2,
     tab_alias     IN  rlm$table_alias,
     stg_clause    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表124-9 CREATE_CONDITIONS_TABLEプロシージャのパラメータ

パラメータ 説明

pevent_struct

共有可能なプリミティブ・ルール条件が定義されているプリミティブ・イベント構造。

cond_table

プリミティブ・ルール条件を格納する表の名前。

stg_clause

条件表のSTORAGE句。

tab_alias

共有可能なプリミティブ・ルール条件が定義されるデータベース表を識別するタイプ。


使用上の注意

  • このプロシージャは、複数のルールによって共有可能なプリミティブ・ルール条件を格納するためのリレーショナル表を作成します。表はユーザー指定の名前を使用して作成されます(この表には、プリミティブ・ルール条件ごとに一意の識別子を格納するためのVARCHAR2列(rlm$condid)、条件式を格納するための式データ・タイプの列(rlm$condition)、およびプリミティブ・ルール条件の記述をプレーン・テキストで格納するためのVARCHAR2列(rlm$conddesc)があります)。

  • 表の作成後、条件表で標準DML操作を使用してプリミティブ・ルール条件を追加または変更できます。条件表は、pevent_struct引数に対して指定されているプリミティブ・イベント構造を使用して(rlm$condition列の)プリミティブ・ルール条件が検証されるように構成されます。

  • プリミティブ・イベント構造を使用して構成されるルール・クラスには、対応する識別子を使用して条件表の行を参照するルール条件を含めることができます。

次のコマンドでは、AddRentalCarイベント構造の共有可能なプリミティブ・ルール条件を格納できる条件表が作成されます。

BEGIN
  DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
    cond_table    => 'FlightConditions',
    pevent_struct => 'AddFlight', 
    stg_clause    => 'TABLESPACE TBS_1');
END;
/

CREATE_EVENT_STRUCTプロシージャ

このプロシージャは、イベント構造を作成します。

構文

DBMS_RLMGR.CREATE_EVENT_STRUCT  (
   event_struct  IN  VARCHAR2);

パラメータ

表124-10 CREATE_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

現行のスキーマ内に作成するイベント構造の名前。


使用上の注意

  • このプロシージャは、現行のスキーマ内にダミーのイベント構造を作成します。このイベント構造には、ADD_ELEMENTARY_ATTRIBUTEプロシージャを使用して、1つ以上の属性を追加できます。

次のコマンドでは、イベント構造が作成されます。

BEGIN  DBMS_RLMGR.CREATE_EVENT_STRUCT(event_struct => 'AddFlight');
END;

CREATE_EXPFIL_INDEXESプロシージャ

このプロシージャは、デフォルトの索引が削除されている場合に、ルール・クラスの式フィルタ索引を作成します。典型的なルール・セットがルール・クラス表に格納されている場合は、統計を収集することによって、索引をこれらの式に応じてチューニングできます。

構文

DBMS_RLMGR.CREATE_EXPFIL_INDEXES  (
   rule_class  IN  VARCHAR2,
   coll_stats  IN  VARCHAR2 default 'NO');

パラメータ

表124-11 CREATE_EXPFIL_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。

coll_stats

索引を構築するための式統計を収集します。


使用上の注意

  • 式フィルタ索引は、該当するイベントのルール・クラス内のルール条件を識別する場合に使用します。ルール・クラスの作成時に作成されるデフォルトの索引は、イベント構造のスカラー属性に関連する述語のタイプ(等価性、非等価性など)がすべて同様であることを想定しています。ルール・クラスのパフォーマンスは、特定のワークロードに対する式フィルタ索引をチューニングすることによって改善できます。これを行うには、典型的なワークロードで統計を収集するか、またはドメインに関する知識を利用して最も一般的な述語構成を識別します。

  • ルール・クラスに対して作成されるデフォルトの式フィルタ索引は、DBMS_RLMGR.DROP_EXPFIL_INDEXESプロシージャを使用して削除できます。この索引は、削除した後でもDBMS_RLMGR.CREATE_EXPFIL_INDEXESプロシージャを使用して再作成できます。CREATE_EXPFIL_INDEXESプロシージャのcoll_stats引数をYESに設定すると、最も一般的な述語構成のルール条件統計が収集され、これらの統計を使用して索引が作成されます。または、ドメインについて詳しいユーザーが、最も一般的な述語構成と特有の述語構成を識別して手動で索引パラメータを設定し、これらのパラメータを使用して索引を作成することもできます。索引パラメータは、ルール・クラスに関連付けられている各プリミティブ・イベント構造に対して設定できます。索引パラメータは、DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERSプロシージャを使用してイベント構造(式フィルタ属性セット)に割り当てることができます。CREATE_EXPFIL_INDEXESプロシージャのcoll_stats引数をNOに設定すると、ルール・クラスに対して作成された式フィルタ索引は、各プリミティブ・イベント構造に関連付けられているデフォルトの索引パラメータを使用します。(パフォーマンスを改善するための式フィルタ索引のチューニングに関する詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の式の索引作成に関する項を参照してください。)

  • 関連ビュー: USER_EXPFIL_DEF_INDEX_PARAMS

次のコマンドでは、CompTravelPromoルール・クラスで定義されているルールの統計が収集され、セット内で最も一般的な述語に基づく式フィルタ索引が作成されます。

BEGIN
DBMS_RLMGR.CREATE_EXPFIL_INDEXES (rule_class => 'CompTravelPromo',
                                  coll_stats => 'yes');
END;
/

次は式フィルタのチューニング例であり、ドメインに関する知識を使用して特定の索引パラメータを割り当てています。次のコマンドでは、特定の索引パラメータがAddFlightイベント構造に関連付けられ、これに応じて、対応する式に対して作成された式フィルタ索引が最適化されます。その後のCREATE_EXPFIL_INDEXESのステップでは、これらの索引パラメータを使用します。

BEGIN
  DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERS('AddFlight',
    exf$attribute_list (
       exf$attribute (attr_name => 'Airline',
                      attr_oper => exf$indexoper('='),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'ToCity',
                      attr_oper => exf$indexoper('='),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'Depart',
                      attr_oper => exf$indexoper('=','<','>','>=','<='),
                      attr_indexed => 'FALSE') 
    )
  );
  -- create the indexes after assigning the index parameters --
  DBMS_RLMGR.CREATE_EXPFIL_INDEXES (rule_class => 'CompTravelPromo'); 
END; 
/

CREATE_INTERFACEプロシージャ

このプロシージャは、ルール・クラスを直接操作できるルール・クラス・インタフェースのパッケージを作成して、効率性および使いやすさを改善します。

構文

DBMS_RLMGR.CREATE_INTERFACE  (
   rule_class   IN  VARCHAR2,
   interface_nm IN  VARCHAR2);

パラメータ

表124-12 CREATE_INTERFACEプロシージャのパラメータ

パラメータ 説明

rule_class

インタフェースのパッケージが作成されるルール・クラスの名前

interface_nm

ルール・アプリケーションのインタフェースとして動作するPL/SQLパッケージの名前。


使用上の注意

  • ランタイム操作(イベントのルールの処理、イベントのコンシューム、セッションのリセットなど)で使用するDBMS_RLMGRプロシージャの共通セットは、引数の1つとして渡されるルール・クラス名を使用し、この名前をルール・クラスの対応する操作に関連付けます。このステップでのオーバーヘッドは、ルール・クラスを直接操作する場合に使用するルール・クラス・インタフェースのパッケージを作成することによって回避できます。

  • ルール・クラス・インタフェースのパッケージは、ルールの処理(PROCESS_RULES)、イベントの追加(ADD_EVENT)、イベントのコンシューム(CONSUME_EVENTCONSUME_PRIM_EVENTS)、ルール・セッションのリセット(RESET_SESSION)を行うためのプロシージャおよびファンクションが含まれるPL/SQLパッケージです。これらのプロシージャおよびファンクションの操作上の特徴は、2つの点を除き、一致する名前を持つDBMS_RLMGRプロシージャおよびファンクションの特徴と同じです。ルール・クラス・インタフェースのパッケージは特定のルール・クラスに対して作成されるため、ルール・クラス名は暗黙的であり、ルール・クラス・インタフェースのパッケージのプロシージャおよびファンクションのルール・クラス名の引数として渡す必要がありません。また、ルール・クラス・インタフェースのパッケージには、ルール・クラスを使用して構成される各プリミティブ・イベント・タイプを受け入れるPROCESS_RULESおよびADD_EVENTという個別のプロシージャが含まれます。これは、イベント・インスタンスをVARCHARインスタンスまたはAnyDataインスタンスとしてのみ受け入れるように一般化されているDBMS_RLMGRパッケージ内の同じプロシージャとは対照的です。

次のコマンドでは、CompTravelPromoルール・クラスに対してルール・クラス・インタフェースのパッケージが作成されます。

  BEGIN
    DBMS_RLMGR.CREATE_INTERFACE  (rule_class   => 'CompTravelPromo',
                                  interface_nm => 'TravelPromoRules'); 
  END;

次のコマンドでは、前のステップで作成されたインタフェースを使用して、AddFlightイベントのインスタンスのルールが処理されます。

  BEGIN
    TravelPromoRules.process_rules (event_inst => 
              AddFlight(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2009', '08-APR-2009'); 
  END;

CREATE_RULE_CLASSプロシージャ

このプロシージャは、ルール・クラスを作成します。

構文

DBMS_RLMGR.CREATE_RULE_CLASS  (
   rule_class      IN  VARCHAR2,
   event_struct    IN  VARCHAR2,
   action_cbk      IN  VARCHAR2,
   actprf_spec     IN  VARCHAR2  default null,
   rslt_viewnm     IN  VARCHAR2  default null,
   rlcls_prop      IN  VARCHAR2  default <simple/>);

パラメータ

表124-13 CREATE_RULE_CLASSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内に作成するルール・クラスの名前。

event_struct

ルール・クラスのイベント構造を表す、現行のスキーマ内のオブジェクト・タイプまたは式フィルタの属性セットの名前。

action_cbk

ルール・クラスに対して作成するアクション・コールバック・プロシージャの名前。

actprf_spec

ルール・クラスに関連付けられているアクション・プリファレンスの仕様(名前とSQLデータ・タイプの組合せ)。

rlst_viewnm

セッション内の一致するイベントとルールが表示されるルール・クラスの結果ビューの名前。この名前のビューが現行のスキーマ内に作成されます。

rlcls_prop

ルール・クラスのプロパティを設定するためのXML文書。デフォルトでは、ルール・クラスは単純イベント(非コンポジット)用に作成されます。


使用上の注意

  • ルール・クラスを正常に作成するには、ビュー、オブジェクト・タイプ、表、パッケージおよびプロシージャを作成するための十分な権限が必要です。

  • このコマンドは、ルール・クラスおよびその依存オブジェクトをユーザーのスキーマ内に作成します。この操作を正常に実行するには、イベント構造に指定する名前が、ユーザーのスキーマ内の既存のオブジェクト・タイプまたは式フィルタ属性セットを指している必要があります。イベント構造にオブジェクト・タイプを使用すると、CREATE_RULE_CLASSプロシージャは、オブジェクト・タイプの属性セットを暗黙的に作成します。また、コンポジット・イベント用に構成されるルール・クラスの場合、このプロシージャは、イベント構造のオブジェクト・タイプ(または属性セット)に直接組み込まれるオブジェクト・タイプの属性セットも作成します。コンポジット・ルール・クラスで使用されるイベント構造では、最大32個の埋込みオブジェクトまたは表の別名(あるいはその両方)を指定できます。このプロシージャで作成される依存オブジェクトのタイプおよび構造は、ルール・クラスおよびそのイベント構造のプロパティによって異なります。ルール・クラスに対して作成される最小セットの依存オブジェクトは、次のとおりです。

    • ルール・クラス表 - ルールの定義(ルール識別子、ルール条件、ルールの説明およびアクション・プリファレンス)を格納するために、ルール・クラスと同じ名前のルール・クラス表がユーザーのスキーマ内に作成されます。この表には、rlm$ruleidrlm$rulecondrlm$enabledおよびrlm$ruledescの4つの列が暗黙的に含まれ、ルール識別子、ルール条件、ルールの状態、ルールの説明がそれぞれ格納されます。ルール・クラス表には、これらの4つの列に加えて、ルール・クラスのアクション・プリファレンス仕様に基づくいくつかの列があります。たとえば、ルール・クラスTravelPromotionでそのアクション・プリファレンス仕様(actpref_spec引数に割当て)として'PromoType VARCHAR(20), OfferedBy VARCHAR(20)'が使用される場合は、次の構造を持つルール・クラス表が作成されます。

      TABLE TravelPromotion (
            rlm$ruleid VARCHAR(100),     -- rule identifier column --
            PromoType VARCHAR(20),       -- action preference 1 --
            OfferedBy VARCHAR(20),       -- action preference 2 --
            rlm$rulecond VARCHAR(4000),  -- rule condition –-
            rlm$ruledesc VARCHAR(1000),  -- rule description --
            rlm$enabled CHAR(1));        -- rule status --
      

      ルール・クラス表の構造は、そのルール・クラスに対して指定されたアクション・プリファレンス・カテゴリのリストに厳密に基づき、ルール・クラスごとに異なります。

    • アクション・コールバック・プロシージャ - 指定した名前のアクション・コールバック・プロシージャのスケルトンがユーザーのスキーマ内に作成され、ルール・クラスに関連付けられます。コールバック・プロシージャは、ルールの評価時に、一致するルールとイベントごとにコールされます。各ルールに対して適切なアクションを実行するには、アクション・コールバック・プロシージャの本体を実装する必要があります。ルールに対して実行するアクションは、そのルールに一致したイベント、ルール定義、およびそのアクション・プリファレンスに基づいて厳密に決定できます。この情報は、引数によってアクション・コールバック・プロシージャに渡されます。したがって、アクション・コールバック・プロシージャの引数リストは、ルール・クラスに関連付けられたイベント構造およびルール・クラス自体によって異なります。

      単純イベント(ルール・クラスのプロパティに割り当てられた<simple/> )用に構成されているルール・クラスの場合、ルールに一致するイベントは、イベント構造と同じタイプとして宣言されるrlm$event引数によって渡されます。また、ルール定義は、対応するルール・クラス表のROWTYPEとして宣言されるrlm$rule引数を使用してアクション・コールバック・プロシージャに渡されます。たとえば、単純な(非コンポジットの)イベント構造AddFlightに対して構成されるルール・クラスTravelPromotion用のアクション・コールバック・プロシージャPromoActionは、次のような構造で作成されます。

      PROCEDURE PromoAction (rlm$event AddFlight,
                             rlm$rule TravlePromotion%ROWTYPE);
      

      コンポジット・イベント(ルール・クラスのプロパティに割り当てられた<composite/>)用に作成されたルール・クラスの場合は、各プリミティブ・イベントを別々の引数として渡すようにアクション・コールバック・プロシージャを作成します。たとえば、プリミティブ・イベントAddFlightおよびAddRentalCarを持つコンポジット・イベントに対して構成されるルール・クラスCompTravelPromo用のアクション・コールバック・プロシージャCompPromoActionは、次のような構造で作成されます。

      -- composite event structure --
      TYPE TSCompEvent (Flt AddFlight,
                        Car AddRentalCar);
      -- corresponding action callback procedure --
      PROCEDURE PromoAction (Flt AddFlight,
                             Car AddRentalCar,
                             rlm$rule CompTravelPromo%ROWTYPE)
      

      ルール・クラスがRULEコンシューム・ポリシーに対して構成されているか、またはルール・クラスが1つ以上のコレクション・イベントに対して有効になっている場合、アクション・コールバック・プロシージャには追加の引数が含まれます。この場合、引数には、イベント識別子(ROWIDデータ・タイプ)およびイベント・インスタンスが含まれます。これらのイベント識別子を使用して、一致するルールをさらに操作することができます。たとえば、ルールのコンシュームに対して構成されているルール・クラスでは、イベント識別子を使用して、DBMS_RLMGR.CONSUME_PRIM_EVENTSファンクションでイベントをコンシュームできます。コレクション・イベントに対して有効になっているルール・クラスでは、コレクション・イベントの同じ識別子を使用して、DBMS_RLMGR.GET_AGGREGATE_VALUEファンクションで特定の集計値をフェッチできます。

    • ルール・クラスの結果ビュー - イベントとルールの一致結果を表示するビューが、ルール・クラスと同じスキーマ内に作成されます。デフォルトでは、このビューは、システム生成された名前で作成されます。オプションで、ルール・クラスの作成者が、このビューの名前をCREATE_RULE_CLASSプロシージャのrlst_viewnm引数で指定することもできます。ADD_EVENTプロシージャを使用して、ルール・セッション内のルール・マネージャにイベントを追加すると、一致するイベントとルールのリストがルール・クラスの結果ビューに表示されます。

      ルール・クラスの結果に対して定義されるビューの構造は、ルール・クラスに対して構成されるイベント構造およびアクション・プリファレンスによって異なります。このビューには3つ以上の列が含まれ、システム生成されたイベント識別子(rlm$evenetid)、そのイベントに一致するルールの識別子(rlm$ruleid)およびルール条件(rlm$rulecond)が表示されます。また、イベント情報およびルール・アクション・プリファレンスを表示する列も含まれます。

      イベント情報は、単純イベント用に構成されたルール・クラスの場合、イベント構造のタイプとして宣言されるrlm$eventとして表示されます。したがって、単純なイベント構造AddFlightに対して構成されるルール・クラスTravelPromotion用のビューMatchingPromosは、次のように作成されます。

      VIEW MatchingPromos (
          rlm$eventid ROWID,
          rlm$event AddFlight,
          rlm$ruleid VARCHAR(100),
          PromoType VARCHAR(30), -- action preference 1 --
          OffredBy VARCHAR(30), -- action preference 2 --
          rlm$rulecond VARCHAR(4000),
          rlm$ruledesc VARCHAR(1000)
      );
      

      コンポジット・イベント用に構成されるルール・クラスの場合は、ルールに一致したプリミティブ・イベントが、対応する列に別々に表示されます。前述のルール・クラスCompTravelPromoの場合、ビューMatchingCompPromosは、次の構造で作成されます。

      VIEW MatchingCompPromos (
          rlm$eventid ROWID,
          Flt AddFlight,
          Car AddRentalCar,
          rlm$ruleid VARCHAR(100),
          PromoType VARCHAR(30),   -- action preference 1 --
          OffredBy VARCHAR(30),    -- action preference 2 --
          rlm$rulecond VARCHAR(4000),
          rlm$ruledesc VARCHAR(1000)
      );
      

      rlm$eventid列の値は、対応するルールの実行時に、ルール・クラスのコンシューム・ポリシーを適用するために使用されます。詳細は、「CONSUME_EVENTファンクション」を参照してください。

次のコマンドでは、単純イベント(AddFlightタイプ)用のルール・クラスが作成されます。

CREATE or REPLACE TYPE AddFlight AS OBJECT (
                  CustId NUMBER,
                  Airline VARCHAR(20),
                  FromCity VARCHAR(30),
                  ToCity VARCHAR(30),
                  Depart DATE,
                  Return DATE);
BEGIN
  DBMS_RLMGR.CREATE_RULE_CLASS (
              rule_class   => 'TravelPromotion', -- rule class name --
              event_struct => 'AddFlight', -- event struct name --
              action_cbk    => 'PromoAction', -- callback proc name –-
              rslt_viewnm   => 'MatchingPromos', -- results view --
              actprf_spec   => 'PromoType VARCHAR(20),
                              OfferedBy VARCHAR(20)');
END;

次のコマンドでは、2つのプリミティブ・イベント(AddFlightおよびAddRentalCar)で構成されるコンポジット・イベント用のルール・クラスが作成されます。

CREATE or REPLACE TYPE TSCompEvent (Flt AddFlight,
                                    Car AddRentalCar);
BEGIN
  DBMS_RLMGR.CREATE_RULE_CLASS (
              rule_class    => 'CompTravelPromo', -- rule class name --
              event_struct  => 'TSCompEvent', -- event struct name --
              action_cbk    => 'CompPromoAction', -- callback proc name –-
              rslt_viewnm   => 'MatchingCompPromos', -- results view --
              actprf_spec   => 'PromoType VARCHAR(20),
                              OfferedBy VARCHAR(20)',
              properties    => '<composite/>');
END;

DELETE_RULEプロシージャ

このプロシージャは、ルール・クラスからルールを削除します。

構文

DBMS_RLMGR.DELETE_RULE (
   rule_class    IN    VARCHAR2,
   rule_id       IN    VARCHAR2);

パラメータ

表124-14 DELETE_RULEプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

rule_id

削除するルールの識別子。


使用上の注意

  • このプロシージャを使用して、ルール・クラスからルールを削除します。削除するルールの識別子は、(ルール・クラスと同じ名前の)ルール・クラス表を問い合せることによって取得できます。また、ルール・クラスの所有者は、1つのルール・クラス表に対してSQL DELETE文を使用してルールを削除することができます。スキーマ拡張した名前をルール・クラスに使用する場合は、ルール・クラスに対するDELETE RULE権限が必要です。詳細は、「GRANT_PRIVILEGEプロシージャ」を参照してください。


    注意:

    DELETE_RULEプロシージャではなくSQL DELETE文を使用してルールを削除する場合、ルール・クラスのAUTOCOMMITプロパティは無視されます。

  • ルール・クラス表の構造については、「CREATE_RULE_CLASSプロシージャ」を参照してください。

このコマンドでは、ルール・クラスからルールが削除されます。

BEGIN
  DBMS_RLMGR.DELETE_RULE (
           rule_class  => 'CompTravelPromo',
           rule_id     => 'AB_AV_FL');
END;

また、前述のルールは、次のSQL DELETE文を発行してルール・クラスから削除することもできます。

DELETE FROM CompTravelPromo WHERE rlm$ruleid = 'AB_AV_FL';

DROP_CONDITIONS_TABLEプロシージャ

このプロシージャは、条件表を削除します。

構文

DBMS_RLMGR.DROP_CONDITIONS_TABLE (
     cond_table IN   VARCHAR2);

パラメータ

表124-15 DROP_CONDITIONS_TABLEプロシージャのパラメータ

パラメータ 説明

cond_table

ユーザー・スキーマの条件表の名前。


使用上の注意

  • このプロシージャは、共有可能な条件式が格納されている表を削除します。この表の条件式の1つを使用してルール・クラスのルール条件を形成している場合、該当するエラーが表示されて削除操作が失敗します。

次のコマンドでは、条件表が削除されます。

BEGIN
  DBMS_RLMGR.DROP_CONDITIONS_TABLE (cond_table => 'FlightConditions');
END;
/

DROP_EVENT_STRUCTプロシージャ

このプロシージャは、イベント構造を削除します。

構文

DBMS_RLMGR.DROP_EVENT_STRUCT  (
   event_struct  IN  VARCHAR2);

パラメータ

表124-16 DROP_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

現行のスキーマ内のイベント構造の名前。


使用上の注意

  • このプロパティは、現行のスキーマ内のイベント構造を削除します。これによって、イベント構造を管理するために作成されたすべての依存オブジェクトが削除されます。

次のコマンドでは、イベント構造が削除されます。

BEGIN  DBMS_RLMGR.DROP_EVENT_STRUCT(event_struct => 'AddFlight');
END;

DROP_EXPFIL_INDEXESプロシージャ

このプロシージャは、ルール・クラスに対して作成された式フィルタ索引を削除します。

構文

DBMS_RLMGR.DROP_EXPFIL_INDEXES  (
   rule_class  IN  VARCHAR2);

パラメータ

表124-17 DROP_EXPFIL_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。


使用上の注意

このプロシージャは、ルール・クラスに関連付けられているすべての式フィルタ索引を削除します。この索引は、DBMS_RLMGR.CREATE_EXPFIL_INDEXESコールを使用して再作成できます。

次のコマンドでは、CompTravelPromoルール・クラスに対して作成された式フィルタ索引が削除されます。

BEGIN
DBMS_RLMGR.DROP_EXPFIL_INDEXES (rule_class => 'CompTravelPromo');
END;
/

DROP_INTERFACEプロシージャ

このプロシージャは、ルール・アプリケーションに対して作成されたルール・クラス・インタフェースのパッケージを削除します。

構文

DBMS_RLMGR.DROP_INTERFACE  (
   interface_nm  IN  VARCHAR2);

パラメータ

表124-18 DROP_INTERFACEプロシージャのパラメータ

パラメータ 説明

interface_nm

ルール・アプリケーションのインタフェースとして動作するPL/SQLパッケージの名前。


使用上の注意

このプロシージャは、DBMS_RLMGR.CREATE_INTERFACEコールを使用して作成されたルール・クラス・インタフェースのパッケージを削除します。

次のコマンドでは、ルール・クラス・インタフェースのパッケージTravelPromoRulesが削除されます。

  BEGIN
    DBMS_RLMGR.DROP_INTERFACE (interface_nm => 'TravelPromoRules' 
  END;

DROP_RULE_CLASSプロシージャ

このプロシージャは、ルール・クラスを削除します。

構文

DBMS_RLMGR.DROP_RULE_CLASS  (
   rule_class  IN  VARCHAR2);

パラメータ

表124-19 DROP_RULE_CLASSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

  • このプロパティは、現行のスキーマ内のルール・クラスを削除します。これによって、ルール・クラスを管理するために作成されたすべての依存オブジェクトが削除されます。ユーザーのスキーマ内のイベント構造は複数のルール・クラスで共有できるため、イベント構造はこのコマンドでは削除されません。コンポジット・イベントおよび個々のプリミティブ・イベントの場合、使用されていないイベント構造を削除するには、DROP_EVENT_STRUCTUREプロシージャを使用する必要があります。

次のコマンドでは、ルール・クラスが削除されます。

BEGIN  DBMS_RLMGR.DROP_RULE_CLASS(rule_class => 'CompTravelPromo');
END;

EXTEND_EVENT_STRUCTプロシージャ

このプロシージャは、新しい属性を追加することによって、1つ以上のルール・クラスで使用されるプリミティブ・イベント構造を拡張する場合に使用します。

構文

DBMS_RLMGR.EXTEND_EVENT_STRUCT (
          event_struct    IN   VARCHAR2, 
          attr_name       IN   VARCHAR2, 
          attr_type       IN   VARCHAR2, 
          attr_defvl      IN   VARCHAR2 default NULL);

パラメータ

表124-20 EXTEND_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

この属性を追加するイベント構造の名前。

attr_name

追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。

attr_type

属性のデータ・タイプ。この引数には、標準のSQLデータ・タイプ、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。

attr_defvl

要素属性のデフォルト値。


使用上の注意

  • このプロシージャは、新しい属性が含まれるように、ルール・クラスにすでに関連付けられているプリミティブ・イベント構造を拡張します。このプロシージャは、主に、完全に開発されたルール・アプリケーションに移行して、拡張されたイベント構造を使用する場合に使用できます(これをADD_ELEMENTARY_ATTRIBUTEコールのかわりに使用しないでください)。一度に1つのイベント構造の属性を構築するADD_ELEMENTARY_ATTRIBUTEコールとは異なり、EXTEND_EVENT_STRUCTコールは、新しい属性が含まれるように、イベント構造に関連付けられているオブジェクト・タイプを進化させて、依存オブジェクトに対していくつかのメンテナンス操作を実行します。

  • EXTEND_EVENT_STRUCTコールの使用方法は、同じ引数セットが指定されているADD_ELEMENTARY_ATTRIBUTEと似ています。表の別名の属性およびテキストと空間データ・タイプの属性は、EXTEND_EVENT_STRUCTコールを使用してイベント構造に追加することはできません。

次のコマンドでは、CompTravelPromoルール・クラスによって使用されるAddRentalCarイベント構造に属性が追加されます。

  BEGIN 
    DBMS_RLMGR.EXTEND_EVENT_STRUCT (
          event_struct   => 'AddRentalCar',  
          attr_name      => 'PrefMemberId',
          attr_type      => 'VARCHAR2(30)'); 
  END; 

GET_AGGREGATE_VALUEファンクション

このファンクションは、コレクション・イベントに対して計算された集計値を取り出します。

構文

DBMS_RLMGR.GRANT_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   event_ident     IN  VARCHAR2,
   aggr_func       IN  VARCHAR2) RETURN VARCHAR2;

パラメータ

表124-21 GET_AGGREGATE_VALUEファンクションのパラメータ

パラメータ 説明

rule_class

コレクション・イベントのルール・クラスの名前。

event_ident

システムによって生成されたコレクション・イベントの識別子。

aggr_func

取り出される集計値のシグネチャ。


使用上の注意

  • collection構成を持つルール条件がイベント・セットと一致する場合は、コレクション・イベントを表すインスタンスおよびシステムによって生成されたコレクション・イベントの識別子がアクション・コールバック・プロシージャに渡されます。このイベント識別子は、コレクション・イベント評価の一部として計算される集計値をフェッチする場合に使用できます。

  • 集計関数は、ルール条件のコレクション構成内のHAVING句またはCOMPUTE句に含めることができます。たとえば、次のルール条件では、sum(amount)count(*)およびmax(amount)に対して3つの集計値が計算されます。アクションを実行するときに、同じsubjectId(イベントがグループ化される属性)を持つBankTransactionのすべてのインスタンスを表すコレクション・イベントの識別子を使用して、これらの値を取得できます。

    <condition>
       <collection name="bank" groupby="subjectId"
                   having="sum(amount) > 10000"
                   compute="max(amount), count(*)"/>
    </condition>
    
  • 集計関数のシグネチャは、GET_AGGREGATE_VALUEファンクションのaggr_func引数にバインドされており、特定の集計値をフェッチします。値がNUMBERデータ・タイプまたはDATEデータ・タイプである場合、対応するVARCHAR表現が戻されます。コレクション・イベントの一部として計算されない集計値をフェッチしようとすると、NULL値が戻されます。

次の例は、アクションの実行の一部として、計算された集計値を出力するアクション・コールバック・プロシージャのサンプル実装を示しています。この場合、BankTransactionプリミティブ・イベントはコレクションに対して有効になっています。

CREATE OR REPLACE PROCEDURE LAWENFORCEMENTCBK (
   bank                 banktransaction,
   bankcollid           rowid,
   transport            transportation,
   fldrpt               fieldreport,
   rlm$rule             LawEnforcementRC%ROWTYPE) IS
   aggrval              VARCHAR(30); 
begin
  dbms_ouput.put_line('Mathing Rule :'||rlm$rule.rlm$ruleid||chr(10)); 
  
  if (bank is not null) then
   dbms_ouput.put_line('-->Bank Transactions by ('||bank.subjectId||')'||chr(10);

   aggrval := dbms_rlmgr.get_aggregate_value(rule_class  =>'LawEnforcementRC',
                                             event_ident => bankcollid,
                                             aggr_func   => 'sum(amount)');
   if (aggrval is not null) then
     dbms_ouput.put_line('---> Sum of the amounts is :'||aggrval||chr(10));
   end if;
   . . .
  end if; 
end;

GRANT_PRIVILEGEプロシージャ

このプロシージャは、ルール・クラスに対する権限を他のユーザーに付与します。

構文

DBMS_RLMGR.GRANT_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   priv_type       IN  VARCHAR2,
   to_user         IN  VARCHAR2);

パラメータ

表124-22 GRANT_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。

priv_type

付与するルール・クラス権限のタイプ。

to_user

権限を付与されるユーザー。


使用上の注意

  • このプロシージャは、ルール・クラスの所有者ではないユーザーに権限を付与します。ユーザーに付与できる権限のタイプは、次のとおりです。

    • PROCESS RULES: ルール・クラスに対するPROCESS RULES権限を持つユーザーは、PROCESS_RULESプロシージャまたはADD_EVENTプロシージャを使用して、そのルール・クラスのルールを処理できます。また、この権限を持つユーザーは、対応するルール・クラスの結果ビューを検索できます。

    • ADD RULE: ルール・クラスに対するADD RULE権限を持つユーザーは、そのルール・クラスにルールを追加できます。また、ルール・クラスの所有者は、1つのルール・クラス表に対するINSERT権限を他のユーザーに付与することもできます。

    • DELETE RULE: ルール・クラスに対するDELETE RULE権限を持つユーザーは、そのルール・クラスからルールを削除できます。また、ルール・クラスの所有者は、1つのルール・クラス表に対するDELETE権限を他のユーザーに付与することもできます。

    • ALL: ルール・クラスに対するALL権限を付与すると、そのルール・クラスに対する前述のすべての権限がユーザーに付与されます。

  • ルール・クラスの所有者は、ルール・クラスの削除、ルール・クラス内のルールの処理、ルール・クラスに対するルールの追加と削除を実行する権限を常に所有しています。ルール・クラスの所有者のみがルール・クラスを削除でき、この権限は、他のユーザーには付与できません。

  • ユーザーがルール・クラスの結果ビューを利用する前に、対応するルール・クラスに関連付けられているプリミティブ・イベント・タイプに対するEXECUTE権限が必要です。

次のコマンドでは、ルール・クラスTravelPromoのPROCESS RULES権限がユーザーSCOTTに付与されます。

BEGIN
  DBMS_RLMGR.GRANT_PRIVILEGE(rule_class => 'TravelPromo',
                             priv_type => 'PROCESS RULES',
                             to_user => 'SCOTT');
END;

PROCESS_RULESプロシージャ

このプロシージャは、指定したイベントのルールを処理します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

ルール・クラスに追加するイベント・インスタンスの文字列表現に対するルールを処理します。

DBMS_RLMGR.PROCESS_RULES  (
   rule_class    IN  VARCHAR2,
   event_inst    IN  VARCHAR2,
   event_type    IN  VARCHAR2 default null);

ルール・クラスに追加するイベント・インスタンスのAnyData表現に対するルールを処理します。

DBMS_RLMGR.PROCESS_RULES  (
   rule_class    IN  VARCHAR2,
   event_inst    IN  sys.AnyData);

パラメータ

表124-23 PROCESS_RULESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_inst

ルール・クラスに追加するイベント・インスタンスの文字列表現またはAnyData表現。

event_type

event_inst引数に割り当てられたイベント・インスタンスのタイプ(コンポジット・イベント用に構成されたルール・クラスに対してイベント・インスタンスの文字列表現を使用する場合)。


使用上の注意

  • このプロシージャは、event_inst引数に割り当てられたイベント・インスタンスに対するルール・クラス内のルールの処理に使用します。

  • 単純イベント(非コンポジット)用に構成されるルール・クラスの場合、イベント・インスタンスは、対応するイベント構造がインスタンス化されたものです。ルールは(最終的に)このイベントに対して評価され、一致するルールごとに、対応するアクション・コールバック・プロシージャがコールされます。イベントに一致するルールがない場合、それ以降、アクションは実行されません。イベントが複数のルールに一致する場合は、ルール・クラスに対して構成されている順序付け句に基づいて、ルールの順序が決定され、アクション・コールバック・プロシージャが起動されます。ルール・クラスがEXCLUSIVEコンシューム・ポリシーに対して構成されている場合、最初のルールがこの順序で実行され、対応するアクション・コールバック・プロシージャがコールされると、イベントに一致する残りのルールは無視されます。

  • コンポジット・イベント用に構成されているルール・クラスの場合、event_inst引数に割り当てられたイベント・インスタンスは、コンポジット・イベント内のプリミティブ・タイプのイベントがインスタンス化されたものです。インスタンスを文字列として表現する場合は、対応するタイプ名をevent_type引数に割り当てる必要があります。コンポジット・イベント用に構成されているルール・クラスに対するPROCESS_RULESコールは、ルール・クラスの状態およびルール・クラスのルールの種類に応じて、様々なアクションを実行します。次の点に注意してください。

    • 渡されたプリミティブ・イベントに対してのみ適用されるルールが最終的に評価され、前述のとおり、一致するルールに対してアクション・コールバック・プロシージャがコールされます。

    • 複数のプリミティブ・イベントに対して適用されるルールの場合、PROCESS_RULESプロシージャで渡されるイベント・インスタンスは、ルールの一部にのみ一致する可能性があります。

      • ルールの残りの部分に一致するプリミティブ・イベント・インスタンスが他にある場合、現行のイベント・インスタンスが他のインスタンスと組み合され、ルール・クラスのルールに一致する完全なコンポジット・イベントが形成されます。したがって、PROCESS_RULESプロシージャのevent_inst引数に割り当てられたイベント・インスタンスは、他の様々な(処理済の)プリミティブ・イベントと組み合せられ、1つ以上のルールが最終的に評価される可能性があります。ルール・クラスのアクション・コールバック・プロシージャは、プリミティブ・イベント(コンポジット・イベント)とルールで構成される組合せごとにコールされます。アクション・コールバック・プロシージャの起動時、ルール・クラスの順序付け句およびプリミティブ・イベントに対するコンシューム・ポリシーが考慮されます。

      • ルールの残りの部分に一致する他のプリミティブ・イベントがない場合、現行のイベント・インスタンスおよびその(増分の)評価結果がデータベースに記録されます。これらの結果は、ルール・クラスで使用される継続時間ポリシーに基づいてイベントがコンシュームされるか、またはシステムから削除されるまで保持されます。

次のコマンドでは、指定したイベントのルール・クラスTravelPromotionのルールが処理されます。

BEGIN
  DBMS_RLMGR.PROCESS_RULES (
               rule_class => 'TravelPromotion',
               event_inst =>
                 AddFlight.getVarchar(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2003', '08-APR-2003'));
END;

次のコマンドでは、示されている2つのプリミティブ・イベントのルール・クラスCompTravelPromoのルールが処理されます。

BEGIN
  DBMS_RLMGR.PROCESS_RULES(
               rule_class => 'CompTravelPromo',
               event_inst =>
                 AddFlight.getVarchar(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2003', '08-APR-2003'),
               event_type => 'AddFlight');
  DBMS_RLMGR.PROCESS_RULES(
               rule_class => 'Scott.CompTravelPromo',
               event_inst =>
                  AnyData.convertObject(AddRentalCar(987, 'Luxury', '03-APR-2003',
                                        '08-APR-2003', NULL)));
END;

PURGE_EVENTSプロシージャ

このプロシージャは、ルール・クラスに関連付けられているすべてのイベントを削除し、いくつかのイベントに一致するルールに関する状態情報をパージすることによって、ルール・クラスで保持されている増分状態をリセットします。

構文

DBMS_RLMGR.PURGE_EVENTS (
     rule_class IN   VARCHAR2);

パラメータ

表124-24 PURGE_EVENTSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

  • ルール・マネージャを使用してルール・アプリケーションを開発する際に、このプロシージャを使用します。ルール・クラスで定義されるルールは、仮定イベントを使用してテストでき、そしてこれらのイベントは、このプロシージャ・コールを発行することによってすべて削除できます。このコールによって、イベント・リポジトリ内のすべてのイベントがクリーンアップされ、一致するルールに関連付けられている部分的な状態情報がパージされます。

次のコマンドでは、CompTravelPromoルール・クラスに関連付けられているイベントが削除されます。

BEGIN
  DBMS_RLMGR.PURGE_EVENTS (rule_class => 'CompTravelPromo');
END;
/

RESET_SESSIONプロシージャ

このプロシージャは、新しいセッションを開始し、ルール・クラスの結果ビュー内の結果を破棄します。

構文

DBMS_RLMGR.RESET_SESSION  (
   rule_class  IN  VARCHAR2);

パラメータ

表124-25 RESET_SESSIONプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。


使用上の注意

  • ADD_EVENTプロシージャを使用してルール・クラスにイベントを追加すると、イベントと一致するルールの結果がルール・クラスの結果ビューに記録されます。デフォルトでは、これらの結果は、データベース・セッションの終了時にリセットされます。また、RESET_SESSIONプロシージャを使用して、リセットを行い、同じデータベース・セッション内で新しいルール・セッションを開始することもできます。このプロシージャは、ADD_EVENTプロシージャを使用してルールを評価する場合にのみ適用できます。

次のコマンドでは、ルール・クラス・セッションがリセットされます。

BEGIN  DBMS_RLMGR.RESET_SESSION(
             rule_class => 'CompTravelPromo');
END;

REVOKE_PRIVILEGEプロシージャ

このプロシージャは、他のユーザーが持つルール・クラスに対する権限を取り消します。

構文

DBMS_RLMGR.REVOKE_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   priv_type       IN  VARCHAR2,
   from_user       IN  VARCHAR2);

パラメータ

表124-26 REVOKE_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。

priv_type

取り消すルール・クラス権限のタイプ。

from_user

権限を取り消されるユーザー。


使用上の注意

  • このプロシージャは、ユーザーに付与されている権限を取り消します。取り消すことができる権限のタイプは、「GRANT_PRIVILEGEプロシージャ」に示されている権限のタイプと同じです。ルール・クラスの所有者が持つルール・クラスに対する権限は取り消すことができません。

次のコマンドでは、ルール・クラスTravelPromoに対するPROCESS RULES権限がユーザーSCOTTから取り消されます。

BEGIN
  DBMS_RLMGR.REVOKE_PRIVILEGE(rule_class  => 'TravelPromo',
                              priv_type   => 'PROCESS RULES',
                              from_user   => 'SCOTT');
END;

SYNC_TEXT_INDEXESプロシージャ

このプロシージャは、ルール条件のCONTAINS演算子に関連する述語を処理するために定義された索引を同期化します。

構文

DBMS_RLMGR.SYNC_TEXT_INDEXES (
     rule_class IN   VARCHAR2);

パラメータ

表124-27 SYNC_TEXT_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

  • ルール・クラスが1つ以上のテキスト属性を持つイベントに対して構成されている場合、対応するルール条件内のテキスト述語は、CTXRULE索引を使用して処理されます。ルール条件内の他のタイプの述語を処理する場合に使用される他のタイプの索引(スカラーおよびXML述語用のビットマップ索引、または空間述語用の空間索引)とは異なり、CTXRULE索引にトランザクションの特性はありません。つまり、ルール条件内のテキスト述語がデータベース・トランザクションで変更された場合、新しい述語は対応するCTXRULE索引に自動的には反映されません。このため、イベントとルール条件の一致で、結果に一貫性がなくなることがあります。ルール・クラスに関連付けられているすべてのCTXRULE索引は、このプロシージャを使用して最新のルール条件に同期化できます。

    テキスト索引を正常に同期化するには、CTX_DDLパッケージに対するEXECUTE権限が必要です。

次のコマンドでは、CompTravelPromoルール・クラスに関連付けられているテキスト索引が同期化されます。

BEGIN
  DBMS_RLMGR.SYNC_TEXT_INDEXES (rule_class => 'CompTravelPromo');
END;
/