DBMS_RULE_ADM
パッケージは、ルール、ルール・セットおよびルール評価コンテキストを作成および管理するためのサブプログラムを提供します。
関連項目:
|
この章では、次の項目について説明します。
セキュリティ・モデル
この項では、DBMS_RULE_ADM
パッケージの使用に関連する項目について説明します。
ユーザー・グループPUBLIC
には、このパッケージのEXECUTE
権限が付与されます。
関連項目: ユーザー・グループPUBLIC の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
表113-1 DBMS_RULE_ADMパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
指定のルールを指定のルール・セットに追加します。 |
ALTER_EVALUATION_CONTEXTプロシージャ |
ルール評価コンテキストを変更します。 |
|
指定したルールの1つ以上の要素を変更します。 |
CREATE_EVALUATION_CONTEXTプロシージャ |
ルール評価コンテキストを作成します。 |
|
ルールを指定の名前で作成します。 |
|
ルール・セットを指定の名前で作成します。 |
|
指定した名前のルール評価コンテキストを削除します。 |
|
指定した名前のルールを削除します。 |
|
指定した名前のルール・セットを削除します。 |
|
指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールに付与します。 |
|
指定のシステム権限を指定のユーザーまたはロールに付与します。 |
|
指定のルールを指定のルール・セットから削除します。 |
|
指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールから取り消します。 |
|
指定のシステム権限を指定のユーザーまたはロールから取り消します。 |
注意: 特に指定がないかぎり、すべてのサブプログラムがコミットされます。 |
このプロシージャは、指定のルールを指定のルール・セットに追加します。
構文
DBMS_RULE_ADM.ADD_RULE( rule_name IN VARCHAR2, rule_set_name IN VARCHAR2, evaluation_context IN VARCHAR2 DEFAULT NULL, rule_comment IN VARCHAR2 DEFAULT NULL);
パラメータ
表113-2 ADD_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ルール・セットに追加するルールの名前。 |
|
ルールを追加するルール・セットの名前。 |
|
評価コンテキスト名。 評価コンテキストを指定するのは、ルール自体に評価コンテキストがなく、ルール・セットの評価コンテキストをルールに使用しない場合のみです。 |
|
ルールの説明(オプション)。ルールをルール・セットに追加する理由などを指定できます。 |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
ルール・セットに対するALTER_ON_RULE_SET
権限があること。
ALTER
_ANY
_RULE
_SET
システム権限があること。
ルール・セットの所有者であること。
また、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。
ルールに対するEXECUTE_ON_RULE
権限があること。
EXECUTE
_ANY
_RULE
システム権限があること。
ルールの所有者であること。
このプロシージャの実行時に、ルールに評価コンテキストがなく、評価コンテキストが未指定の場合、そのルールで使用されるのは、ルール・セットに関連付けられている評価コンテキストです。このような場合は、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、ルール所有者に必要な権限が付与されている必要があります。
評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。
評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT
権限があること。
EXECUTE_ANY_EVALUATION_CONTEXT
システム権限があり、評価コンテキストの所有者がSYS
ではないこと。
評価コンテキストの所有者であること。
さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。
このプロシージャは、ルール評価コンテキストを変更します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。
構文
DBMS_RULE_ADM.ALTER_EVALUATION_CONTEXT( evaluation_context_name IN VARCHAR2, table_aliases IN SYS.RE$TABLE_ALIAS_LIST DEFAULT NULL, remove_table_aliases IN BOOLEAN DEFAULT FALSE, variable_types IN SYS.RE$VARIABLE_TYPE_LIST DEFAULT NULL, remove_variable_types IN BOOLEAN DEFAULT FALSE, evaluation_function IN VARCHAR2 DEFAULT NULL, remove_evaluation_function IN BOOLEAN DEFAULT FALSE, evaluation_context_comment IN VARCHAR2 DEFAULT NULL, remove_eval_context_comment IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-3 ALTER_EVALUATION_CONTEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更する評価コンテキストの名前。 たとえば、 |
|
表の別名によって、評価コンテキストに表を指定します。表の別名は、ルール条件の表を参照するために使用されます。 |
|
|
|
|
|
|
|
評価ファンクションは、評価コンテキストを使用しているルールを評価するためにコールされるファンクション(オプション)です。 評価ファンクションの詳細は、「CREATE_EVALUATION_CONTEXTプロシージャ」を参照してください。 |
|
|
|
評価コンテキスト・コメントは、ルール評価コンテキストに関する説明(オプション)です。 |
|
|
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
変更する評価コンテキストの所有者であること。
別のユーザーが所有する評価コンテキストに対するALL_ON_EVALUATION_CONTEXT
またはALTER_ON_EVALUATION_CONTEXT
オブジェクト権限があること。
ALTER_ANY_EVALUATION_CONTEXT
システム権限があること。
このプロシージャは、指定したルールの1つ以上の要素を変更します。
構文
DBMS_RULE_ADM.ALTER_RULE( rule_name IN VARCHAR2, condition IN VARCHAR2 DEFAULT NULL, evaluation_context IN VARCHAR2 DEFAULT NULL, remove_evaluation_context IN BOOLEAN DEFAULT FALSE, action_context IN SYS.RE$NV_LIST DEFAULT NULL, remove_action_context IN BOOLEAN DEFAULT FALSE, rule_comment IN VARCHAR2 DEFAULT NULL, remove_rule_comment IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-4 ALTER_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するルールの名前。 |
|
ルールに関連付ける条件。
|
|
評価コンテキスト名。
|
|
|
|
|
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
ルールに対するALTER_ON_RULE
権限があること。
ALTER
_ANY
_RULE
システム権限があること。
変更するルールの所有者であること。
評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。
評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT
権限があること。
EXECUTE_ANY_EVALUATION_CONTEXT
システム権限があり、評価コンテキストの所有者がSYS
ではないこと。
評価コンテキストの所有者であること。
さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。
このプロシージャは、ルール評価コンテキストを作成します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。
構文
DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT( evaluation_context_name IN VARCHAR2, table_aliases IN SYS.RE$TABLE_ALIAS_LIST DEFAULT NULL, variable_types IN SYS.RE$VARIABLE_TYPE_LIST DEFAULT NULL, evaluation_function IN VARCHAR2 DEFAULT NULL, evaluation_context_comment IN VARCHAR2 DEFAULT NULL);
パラメータ
表113-5 CREATE_EVALUATION_CONTEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する評価コンテキストの名前。 たとえば、 |
|
評価コンテキストに表を指定する表の別名。表の別名は、ルール条件の表を参照するために使用されます。 |
|
評価コンテキストに使用する変数のリスト。 |
|
評価コンテキストを使用しているルールの評価でコールされるファンクション(オプション)。 評価ファンクションの詳細は、「使用上の注意」を参照してください。 |
|
ルール評価コンテキストに関する説明(オプション)。 |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
作成する評価コンテキストの所有者であり、CREATE_EVALUATION_CONTEXT_OBJ
システム権限があること。
CREATE
_ANY
_EVALUATION
_CONTEXT
システム権限があること。
評価ファンクションには、次の署名が必要です。
FUNCTION evaluation_function_name(
rule_set_name IN VARCHAR2,
evaluation_context IN VARCHAR2,
event_context IN SYS.RE$NV_LIST DEFAULT NULL,
table_values IN SYS.RE$TABLE_VALUE_LIST DEFAULT NULL,
column_values IN SYS.RE$COLUMN_VALUE_LIST DEFAULT NULL,
variable_values IN SYS.RE$VARIABLE_VALUE_LIST DEFAULT NULL,
attribute_values IN SYS.RE$ATTRIBUTE_VALUE_LIST DEFAULT NULL,
stop_on_first_hit IN BOOLEAN DEFAULT FALSE,
simple_rules_only IN BOOLEAN DEFAULT FALSE,
true_rules OUT SYS.RE$RULE_HIT_LIST,
maybe_rules OUT SYS.RE$RULE_HIT_LIST);
RETURN BINARY_INTEGER;
注意: 各パラメータは必須で、指定のデータ型であることが必要です。ただし、パラメータの名前は変更できます。 |
ファンクションの戻り値は、次のいずれか1つです。
DBMS_RULE_ADM.EVALUATION_SUCCESS
: ユーザーが指定した評価ファンクションによって、ルール・セットの評価が正常に完了しました。 ルール・エンジンは、評価ファンクションで取得した評価結果を、DBMS_RULE.EVALUATE
プロシージャを使用するルール・エンジン・クライアントに戻します。
DBMS_RULE_ADM.EVALUATION_CONTINUE
: ルール・エンジンは、ルール・セットには評価ファンクションがないものと評価しました。評価ファンクションは使用されず、評価ファンクションによって戻される結果はすべて無視されます。
DBMS_RULE_ADM.EVALUATION_FAILURE
: ユーザーが指定した評価ファンクションは失敗しました。ルール・セットの評価は停止し、エラーになります。
このプロシージャは、ルールを作成します。
構文
DBMS_RULE_ADM.CREATE_RULE( rule_name IN VARCHAR2, condition IN VARCHAR2, evaluation_context IN VARCHAR2 DEFAULT NULL, action_context IN SYS.RE$NV_LIST DEFAULT NULL, rule_comment IN VARCHAR2 DEFAULT NULL);
パラメータ
表113-6 CREATE_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成するルールの名前。 |
|
ルールに関連付ける条件。条件は department_id = 30 ルール条件のテキストの大文字と小文字が正しく使用されていることを確認してください。 注意: 条件に |
|
ルールに関連付ける評価コンテキスト名(オプション)。
|
|
ルールに関連付けるアクション・コンテキスト。ルールのアクション・コンテキストは、ルールの評価時に、ルール・エンジンのクライアントが解析するルールに関連付けられている情報です。 |
|
ルールに関する説明(オプション)。 |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
作成するルールの所有者であり、CREATE_RULE_OBJ
システム権限があること。
CREATE
_ANY
_RULE
システム権限があること。
評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。
評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT
権限があること。
EXECUTE_ANY_EVALUATION_CONTEXT
システム権限があり、評価コンテキストの所有者がSYS
ではないこと。
評価コンテキストの所有者であること。
さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。
このプロシージャは、ルール・セットを作成します。
構文
DBMS_RULE_ADM.CREATE_RULE_SET( rule_set_name IN VARCHAR2, evaluation_context IN VARCHAR2 DEFAULT NULL, rule_set_comment IN VARCHAR2 DEFAULT NULL);
パラメータ
表113-7 CREATE_RULE_SETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成するルール・セットの名前。 |
|
評価コンテキスト名(オプション)。 |
|
ルール・セットに関する説明(オプション)。 |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
作成するルール・セットの所有者であり、CREATE_RULE_SET_OBJ
システム権限があること。
CREATE
_ANY
_RULE
_SET
システム権限があること。
評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。
評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT
権限があること。
EXECUTE_ANY_EVALUATION_CONTEXT
システム権限があり、評価コンテキストの所有者がSYS
ではないこと。
評価コンテキストの所有者であること。
このプロシージャは、ルール評価コンテキストを削除します。
構文
DBMS_RULE_ADM.DROP_EVALUATION_CONTEXT( evaluation_context_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-8 DROP_EVALUATION_CONTEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する評価コンテキストの名前。 たとえば、 |
|
ルール評価コンテキストを使用するルールまたはルール・セットがない場合に ルール評価コンテキストを使用するルールまたはルール・セットが1つ以上ある場合に 注意: |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
評価コンテキストの所有者であること。
DROP
_ANY
_EVALUATION
_CONTEXT
システム権限があること。
このプロシージャは、ルールを削除します。
構文
DBMS_RULE_ADM.DROP_RULE( rule_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-9 DROP_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するルールの名前。 |
|
このルールが含まれているルール・セットがない場合に このルールを含むルール・セットが1つ以上ある場合に |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
ルールの所有者であること。
DROP
_ANY
_RULE
システム権限があること。
注意:
|
このプロシージャは、ルール・セットを削除します。
構文
DBMS_RULE_ADM.DROP_RULE_SET( rule_set_name IN VARCHAR2, delete_rules IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-10 DROP_RULE_SETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するルール・セットの名前。 |
|
|
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
DROP
_ANY
_RULE
_SET
システム権限があること。
ルール・セットの所有者であること。
注意: ルール・セットに関連付けられているルール評価コンテキストは、このプロシージャを実行しても削除されません。 |
このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールに付与します。オブジェクトを所有しているユーザーには、そのオブジェクトに関するすべての権限および付与オプションが自動的に付与されます。
構文
DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE( privilege IN BINARY_INTEGER, object_name IN VARCHAR2, grantee IN VARCHAR2, grant_option IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-11 GRANT_OBJECT_PRIVILEGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトの権限受領者に付与するオブジェクト権限の名前。使用可能なオブジェクト権限は、「使用上の注意」を参照してください。 |
|
権限受領者に付与するオブジェクトの名前。 |
|
権限を付与するユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。 |
|
|
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
権限を付与するオブジェクトの所有者であること。
付与する権限と同じ権限および付与オプションがあること。
さらに、オブジェクトがルール・セットの場合は、ルール・セット内のすべてのルールに対するEXECUTE
権限および付与オプションがあるか、またはルール・セット内のルールを所有していることが必要です。
表113-12に、オブジェクト権限を示します。
表113-12 評価コンテキスト、ルールおよびルール・セットに関するオブジェクト権限
権限 | 説明 |
---|---|
|
他のユーザーのスキーマにある特定の評価コンテキストを変更および実行する権限。 |
|
他のユーザーのスキーマにある特定のルールを変更および実行する権限。 |
|
他のユーザーのスキーマにある特定のルール・セットを変更および実行する権限。 |
|
他のユーザーのスキーマにある特定の評価コンテキストを変更する権限。 |
|
他のユーザーのスキーマにある特定のルールを変更する権限。 |
|
他のユーザーのスキーマにある特定のルール・セットを変更する権限。 |
|
他のユーザーのスキーマにある特定の評価コンテキストを実行する権限。 |
|
他のユーザーのスキーマにある特定のルールを実行する権限。 |
|
他のユーザーのスキーマにある特定のルール・セットを実行する権限。 |
例
たとえば、strmadmin
スキーマのhr_dml
という名前のルールを変更する権限をHR
ユーザーに付与するには、次のように入力します。
BEGIN DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE( privilege => SYS.DBMS_RULE_ADM.ALTER_ON_RULE, object_name => 'strmadmin.hr_dml', grantee => 'hr', grant_option => FALSE); END; /
このプロシージャは、指定のシステム権限を指定のユーザーまたはロールに付与します。
構文
DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE( privilege IN BINARY_INTEGER, grantee IN VARCHAR2, grant_option IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-13 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
権限受領者に付与するシステム権限の名前。 |
|
権限を付与するユーザーまたはロールの名前。 |
|
|
使用上の注意
表113-14に、システム権限を示します。
表113-14 評価コンテキスト、ルールおよびルール・セットに関するシステム権限
権限 | 説明 |
---|---|
|
任意のユーザーが所有する評価コンテキストを変更する権限。 |
|
任意のユーザーが所有するルールを変更する権限。 |
|
任意のユーザーが所有するルール・セットを変更する権限。 |
|
新規評価コンテキストを任意のスキーマに作成する権限。 |
|
新規評価コンテキストを権限受領者のスキーマに作成する権限。 |
|
新規ルールを任意のスキーマに作成する権限。 |
|
新規ルールを権限受領者のスキーマに作成する権限。 |
|
新規ルール・セットを任意のスキーマに作成する権限。 |
|
新規ルール・セットを権限受領者のスキーマに作成する権限。 |
|
任意のスキーマの評価コンテキストを削除する権限。 |
|
任意のスキーマのルールを削除する権限。 |
|
任意のスキーマのルール・セットを削除する権限。 |
|
任意のユーザーが所有する評価コンテキストを実行する権限。 |
|
任意のユーザーが所有するルールを実行する権限。 |
|
任意のユーザーが所有するルール・セットを実行する権限。 |
たとえば、ルール・セットを任意のスキーマに作成する権限をstrmadmin
ユーザーに付与するには、次のように入力します。
BEGIN DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE( privilege => SYS.DBMS_RULE_ADM.CREATE_ANY_RULE_SET, grantee => 'strmadmin', grant_option => FALSE); END; /
注意: 「ANY」 オブジェクトに関する権限(ALTER_ANY_RULE など)を付与する際に、O7_DICTIONARY_ACCESSIBILITY 初期化パラメータがFALSE に設定されている場合は、SYS スキーマを除くすべてのスキーマで、該当するタイプのオブジェクトへのアクセス権をユーザーに付与してください。デフォルトでは、O7_DICTIONARY_ACCESSIBILITY 初期化パラメータは、FALSE に設定されています。
|
このプロシージャは、指定のルールを指定のルール・セットから削除します。
構文
DBMS_RULE_ADM.REMOVE_RULE( rule_name IN VARCHAR2, rule_set_name IN VARCHAR2, evaluation_context IN VARCHAR2 DEFAULT NULL, all_evaluation_contexts IN BOOLEAN DEFAULT FALSE);
パラメータ
表113-15 REMOVE_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ルール・セットから削除するルールの名前。 |
|
ルールを削除するルール・セットの名前。 |
|
削除するルールに関連付けられている評価コンテキストの名前。 削除するルールに、 ルールをルール・セットに追加するときに評価コンテキストを指定しなかった場合は、 |
|
このパラメータが関連するのは、同じルールを異なる評価コンテキストを持つルール・セットに複数回追加した場合のみです。 |
使用上の注意
このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。
ルール・セットに対するALTER_ON_RULE_SET
権限があること。
ALTER
_ANY
_RULE
_SET
システム権限があること。
ルール・セットの所有者であること。
注意: これは、データベースからルールを削除するプロシージャではありません。 データベースからルールを削除するには、DROP_RULE プロシージャを使用します。 |
このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールから取り消します。
構文
DBMS_RULE_ADM.REVOKE_OBJECT_PRIVILEGE( privilege IN BINARY_INTEGER, object_name IN VARCHAR2, revokee IN VARCHAR2);
パラメータ
表113-16 REVOKE_OBJECT_PRIVILEGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
権限受領者から取り消すオブジェクトに関するオブジェクト権限の名前。 オブジェクト権限のリストは、「GRANT_OBJECT_PRIVILEGEプロシージャ」を参照してください。 |
|
権限受領者から権限を取り消すオブジェクトの名前。 |
|
権限が取り消されるユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。 |
このプロシージャは、指定のシステム権限を指定のユーザーまたはロールから取り消します。
構文
DBMS_RULE_ADM.REVOKE_SYSTEM_PRIVILEGE( privilege IN BINARY_INTEGER, revokee IN VARCHAR2);
パラメータ
表113-17 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
権限受領者から取り消すシステム権限の名前。 システム権限のリストは、「GRANT_SYSTEM_PRIVILEGEプロシージャ」を参照してください。 |
|
権限が取り消されるユーザーまたはロールの名前。 |