16 Oracle Database Vaultコマンド・ルールのAPI
DBMS_MACADM PL/SQLパッケージは、コマンド・ルールを構成するためのプロシージャを提供します。 
               
DV_OWNERロールまたはDV_ADMINロールを付与されているユーザーのみがこれらのプロシージャを使用できます。
               
- CREATE_COMMAND_RULEプロシージャ
 CREATE_COMMAND_RULEプロシージャは、コマンド・ルールを作成し、ルール・セットに関連付けます。
- CREATE_CONNECT_COMMAND_RULEプロシージャ
 CREATE_CONNECT_COMMAND_RULEプロシージャは、ユーザーおよびルール・セットに関連付けることができる、CONNECTコマンド・ルールを作成します。
- CREATE_SESSION_EVENT_CMD_RULEプロシージャ
 CREATE_SESSION_EVENT_CMD_RULEプロシージャは、ALTER SESSION文に基づいて、セッション・イベントに関連付けることができるコマンド・ルールを作成します。
- CREATE_SYSTEM_EVENT_CMD_RULEプロシージャ
 CREATE_SYSTEM_EVENT_CMD_RULEプロシージャは、ALTER SYSTEM文に基づいて、システム・イベントに関連付けることができるコマンド・ルールを作成します。
- DELETE_COMMAND_RULEプロシージャ
 DELETE_COMMAND_RULEプロシージャは、コマンド・ルールの宣言を削除します。
- DELETE_CONNECT_COMMAND_RULEプロシージャ
 DELETE_CONNECT_COMMAND_RULEプロシージャは、CREATE_CONNECT_COMMAND_RULEプロシージャで作成されたCONNECTコマンド・ルールを削除します。
- DELETE_SESSION_EVENT_CMD_RULEプロシージャ
 DELETE_SESSION_EVENT_CMD_RULEプロシージャは、イベントに関連付けられているセッション・コマンド・ルールを削除します。
- DELETE_SYSTEM_EVENT_CMD_RULEプロシージャ
 DELETE_SYSTEM_EVENT_CMD_RULEプロシージャは、イベントに関連付けられているシステム・コマンド・ルールを削除します。
- UPDATE_COMMAND_RULEプロシージャ
 UPDATE_COMMAND_RULEプロシージャは、コマンド・ルールの宣言を更新します。
- UPDATE_CONNECT_COMMAND_RULEプロシージャ
 UPDATE_CONNECT_COMMAND_RULEプロシージャは、CREATE_CONNECT_COMMAND_RULEプロシージャで作成されたCONNECTコマンド・ルールを更新します。
- UPDATE_SESSION_EVENT_CMD_RULEプロシージャ
 UPDATE_SESSION_EVENT_CMD_RULEプロシージャは、ALTER SESSION文に基づいて、セッション・イベント・コマンド・ルールを更新します。
- UPDATE_SYSTEM_EVENT_CMD_RULEプロシージャ
 UPDATE_SYSTEM_EVENT_CMD_RULEプロシージャは、ALTER SYSTEM文に基づいて、システム・イベント・コマンド・ルールを更新します。
16.1 CREATE_COMMAND_RULEプロシージャ
CREATE_COMMAND_RULEプロシージャは、コマンド・ルールを作成し、ルール・セットに関連付けます。
                  
オプションで、これを使用して、ルール・セットによるコマンド・ルールのルール・チェックを有効化できます。マルチテナント環境では、共通およびローカルの両方のコマンド・ルールを作成できます。
構文
DBMS_MACADM.CREATE_COMMAND_RULE( command IN VARCHAR2, rule_set_name IN VARCHAR2, object_owner IN VARCHAR2, object_name IN VARCHAR2, enabled IN VARCHAR2, privilege_scope IN NUMBER, clause_name IN VARCHAR2 DEFAULT, parameter_name IN VARCHAR2 DEFAULT, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT);
パラメータ
表16-1 CREATE_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | 保護するSQL文。 次の項も参照してください。 
 | 
| 
 | このコマンド・ルールに関連付けるルール・セットの名前。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | このコマンド・ルールを適用するデータベース・スキーマ。 DBA_USERSビューを問い合せます。詳細は、「コマンド・ルールの作成」の「オブジェクト所有者」も参照してください。 | 
| 
 | コマンド・ルールで保護されるオブジェクト。(ワイルドカード%を使用できます。コマンド・ルールで保護されるオブジェクトの詳細は、「コマンド・ルールの作成」の「オブジェクト名」を参照)。 使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | 廃止されたパラメータ | 
| 
 | コマンド・ルールの作成に使用されたSQL文の句。たとえば、 
 デフォルトは | 
| 
 | 
 
 デフォルトは | 
| 
 | コマンド・ルールで定義されているイベント。たとえば、 
 デフォルトは | 
| 
 | 
 
 デフォルトは | 
| 
 | 
 
 デフォルトは | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
ALTER SYSTEMコマンド・ルール設定
表16-2に、ALTER SYSTEMコマンド・ルール設定を示します。
                     
表16-2 ALTER SYSTEMコマンド・ルール設定
| clause_name | parameter_name — パラメータ値 | 
|---|---|
| 
 | 
 | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし — 該当なし | 
| 
 | 該当なし —  | 
| 
 | 
 | 
| 
 | 
 
 | 
| 
 | 
 
 
 
 | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 | 該当なし — 該当なし | 
| 
 | 
 | 
| 
 | 該当なし — 該当なし | 
| 
 | 
 
 
 | 
| 
 | 
 
 
 
 
 
 
 | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし — 該当なし | 
| 
 | 該当なし —  | 
ALTER SESSIONコマンド・ルール設定
表16-3に、ALTER SESSIONコマンド・ルール設定を示します。
                     
表16-3 ALTER SESSIONコマンド・ルール設定
| clause_name | parameter_name — パラメータ値 | 
|---|---|
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 
 
 | 
| 
 | 該当なし — 該当なし | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし —  | 
| 
 | 該当なし — 該当なし | 
| 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
例
単純なコマンド・ルール
次の例では、OE.ORDERS表に対するSELECT文のために単純なコマンド・ルールを作成する方法を示します。このコマンド・ルールでは、コマンド・ルールは使用されません。
                     
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'SELECT', rule_set_name => 'Check User Role', object_owner => 'OE', object_name => 'ORDERS', enabled => DBMS_MACUTL.G_YES); END; /
この例では、ユーザーがhr_audit_pol統合監査ポリシーを有効化または無効化するかどうかを確認するコマンド・ルールを作成する方法を示します。オブジェクトが統合監査ポリシーの場合は、commandパラメータに対して、AUDITでなくAUDIT POLICYが必要です。
                     
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'AUDIT POLICY', rule_set_name => 'Check ability to audit', object_owner => '%', object_name => 'hr_audit_pol', enabled => DBMS_MACUTL.G_YES, scope => DBMS_MACUTL.G.SCOPE_LOCAL); END; /
SET句を使用したALTER SESSIONコマンド・ルール
次の例では、ERROR_ON_OVERLAP_TIMEパラメータを指定してSET句を使用する、ALTER SESSIONコマンド・ルールを作成する方法を示します。 
                     
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'ALTER SESSION', rule_set_name => 'Test ERROR_ON_OVERLAP_TIME for FALSE', object_owner => '%', object_name => '%', enabled => DBMS_MACUTL.G_YES, clause_name => 'SET', parameter_name => 'ERROR_ON_OVERLAP_TIME', scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
この例の説明は、次のとおりです。
- 
                           rule_set_name:ALTER SESSIONSQL文のERROR_ON_OVERLAP_TIMEセッション・パラメータは、TRUEまたはFALSEのどちらかに設定する必要があります。この設定になっているかどうかを確認するルール・セットを作成できます。たとえば、次のルールがあるとします。EXEC DBMS_MACADM.CREATE_RULE('RULE_TRUE', 'UPPER(PARAMETER_VALUE) = ''TRUE''');このルールとともに使用されるルール・セットは、次のようにできます。 BEGIN DBMS_MACADM.CREATE_RULE_SET( rule_set_name => 'Test ERROR_ON_OVERLAP_TIME', description => 'Checks if the ERROR_ON_OVERLAP_TIME setting is TRUE or FALSE', enabled => DBMS_MACUTL.G_YES, eval_options => DBMS_MACUTL.G_RULESET_EVAL_ALL, audit_options => DBMS_MACUTL.G_RULESET_AUDIT_FAIL + DBMS_MACUTL.G_RULESET_AUDIT_SUCCESS, fail_options => DBMS_MACUTL.G_RULESET_FAIL_SILENT, fail_message => 'false error on overlaptime', fail_code => 20461, handler_options => DBMS_MACUTL.G_RULESET_HANDLER_FAIL, handler => '', is_static => false); END; / EXEC DBMS_MACADM.ADD_RULE_TO_RULE_SET('Test ERROR_ON_OVERLAP_TIME', 'RULE_TRUE');
- 
                           ALTER SESSIONおよびALTER SYSTEMコマンド・ルールで、object_ownerおよびobject_nameを%に設定する必要があります。
- 
                           enabledでは、コマンド・ルールを作成時に有効にするために、DBMS_MACUTL.G_YES定数が使用されます。
- 
                           clause_nameでは、ALTER SESSIONPL/SQL文のSET句を使用するようALTER SESSIONコマンド・ルールが設定されます。
- 
                           parameter_nameは、SET句のERROR_ON_OVERLAP_TIMEパラメータに設定されます。
- 
                           scopeでは、コマンド・ルールを共通コマンド・ルールにするよう設定するために、DBMS_MACUTL.G_SCOPE_COMMON定数が使用されます。このコマンド・ルールはマルチテナント環境のアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているルールまたはルール・セットは、共通である必要があります。コマンド・ルールをローカルで作成している場合は、 scopeをDBMS_MACUTL.G_SCOPE_LOCALに設定します。その場合、このプロシージャを実行するユーザーは、コマンド・ルールが存在するPDB内にいる必要があります。既存のPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。このコマンド・ルールに関連付けられているルールまたはルール・セットは、ローカルである必要があります。
CHECKPOINT句を使用したALTER SYSTEMコマンド・ルール
この例では、CHECKPOINT句を使用するALTER SYSTEMコマンド・ルールの作成方法を示します。CHECKPOINT設定のためにコマンド・ルールをテストするには、前の例のALTER SESSIONコマンド・ルールと同様に、ルール・セットおよびルールを作成する必要があります。この例では、parameter設定を指定しません。これは、CHECKPOINT設定にパラメータがないためです。
                     
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'ALTER SYSTEM', rule_set_name => 'Test CHECKPOINT Setting', object_owner => '%', object_name => '%', enabled => DBMS_MACUTL.G_YES, clause_name => 'CHECKPOINT', parameter_name => '', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
SET句を使用したALTER SESSIONコマンド・ルール
次のALTER SESSIONコマンド・ルールでは、SET句を使用してevent_nameおよびcomponent_nameを指定します。clause_nameパラメータでSETが指定される場合は、event_name、component_nameおよびaction_nameパラメータのみを使用できます。
                     
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'ALTER SESSION', rule_set_name => 'Check Trace Events', object_owner => '%', object_name => '%', enabled => DBMS_MACUTL.G_YES, clause_name => 'SET', parameter_name => 'EVENTS', event_name => 'TRACE', component_name => 'GCS', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
このトピックの概念的情報については、ALTER SESSIONおよびALTER SYSTEMコマンド・ルールを参照してください。
16.2 CREATE_CONNECT_COMMAND_RULEプロシージャ
CREATE_CONNECT_COMMAND_RULEプロシージャは、ユーザーおよびルール・セットに関連付けることができる、CONNECTコマンド・ルールを作成します。
                  
マルチテナント環境では、共通およびローカルの両方のコマンド・ルールを作成できます。
構文
DBMS_MACADM.CREATE_CONNECT_COMMAND_RULE( user_name IN VARCHAR2, rule_set_name IN VARCHAR2, enabled IN VARCHAR2, scope IN NUMBER DEFAULT);
パラメータ
表16-4 CREATE_CONNECT_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | CONNECTコマンド・ルールの適用対象となるユーザー。 マルチテナント環境では、ルートでこのプロシージャを実行した場合、 マルチテナント環境では、このユーザーが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルまたは共通であることを確認します。 現在のインスタンス内の既存のデータベース・ユーザーを確認するには、Oracle Databaseリファレンスで説明されている、 | 
| 
 | このコマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通CONNECTコマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
例
次の例では、マルチテナント環境で共通CONNECTコマンド・ルールを作成する方法を示します。このコマンド・ルールはCDBルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているユーザー名またはルール・セットは、共通である必要があります。
BEGIN DBMS_MACADM.CREATE_CONNECT_COMMAND_RULE( rule_set_name => 'Allow Sessions', user_name => 'C##HR_ADMIN', enabled => DBMS_MACUTL.G_SIMULATION, scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
この例は、前の例のローカル・バージョンです。このプロシージャを実行するユーザーは、ローカルCONNECTコマンド・ルールが存在するPDB内にいる必要があります。使用可能なPDBを見つけるには、show pdbsコマンドを実行します。このコマンド・ルールに関連付けられているルール・セットは、ローカルである必要があります。ユーザーは、共通またはローカルのどちらかにできます。
                     
BEGIN DBMS_MACADM.CREATE_CONNECT_COMMAND_RULE( rule_set_name => 'Allow Sessions', user_name => 'PSMITH', enabled => DBMS_MACUTL.G_SIMULATION, scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
16.3 CREATE_SESSION_EVENT_CMD_RULEプロシージャ
CREATE_SESSION_EVENT_CMD_RULEプロシージャは、ALTER SESSION文に基づいて、セッション・イベントに関連付けることができるコマンド・ルールを作成します。
                  
マルチテナント環境では、セッション・イベントの共通およびローカルの両方のコマンド・ルールを作成できます。
構文
DBMS_MACADM.CREATE_SESSION_EVENT_CMD_RULE( rule_set_name IN VARCHAR2, enabled IN VARCHAR2, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
パラメータ
表16-5 CREATE_SESSION_EVENT_CMD_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、セッション・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールが | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合は | 
例
次の例では、マルチテナント環境で共通セッション・イベント・コマンド・ルールを作成する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているユーザー名またはルール・セットは、共通である必要があります。
BEGIN DBMS_MACADM.CREATE_SESSION_EVENT_CMD_RULE( rule_set_name => 'Allow Sessions', event_name => 'TRACE', component_name => 'DV', action_name => 'CURSORTRACE', enabled => DBMS_MACUTL.G_SIMULATION, scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
この例では、47998トレース・イベントのためにセッション・イベントを作成する方法を示します。この例では、失敗した操作のPL/SQLスタックを記録します。
BEGIN DBMS_MACADM.CREATE_SESSION_EVENT_CMD_RULE( rule_set_name => 'Allow Sessions', event_name => '47998', enabled => 'y', scope => DBMS_MACUTL.G_SCOPE_LOCAL, pl_sql_stack => TRUE); END; /
16.4 CREATE_SYSTEM_EVENT_CMD_RULEプロシージャ
CREATE_SYSTEM_EVENT_CMD_RULEプロシージャは、ALTER SYSTEM文に基づいて、システム・イベントに関連付けることができるコマンド・ルールを作成します。 
                  
マルチテナント環境では、ALTER SYSTEMの共通およびローカルの両方のコマンド・ルールを作成できます。
構文
DBMS_MACADM.CREATE_SYSTEM_EVENT_CMD_RULE( rule_set_name IN VARCHAR2, enabled IN VARCHAR2, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT pl_sql_stack IN BOOLEAN DEFAULT);
パラメータ
表16-6 CREATE_SYSTEM_EVENT_CMD_RULEパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、システム・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールが | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合は | 
例
次の例では、マルチテナント環境で共通システム・イベント・コマンド・ルールを作成する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているユーザー名またはルール・セットは、共通である必要があります。
BEGIN DBMS_MACADM.CREATE_SYSTEM_EVENT_CMD_RULE( rule_set_name => 'Enabled', event_name => 'TRACE', component_name => 'GSIPC', action_name => 'HEAPDUMP', enabled => DBMS_MACUTL.G_YES, scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
16.5 DELETE_COMMAND_RULEプロシージャ
DELETE_COMMAND_RULEプロシージャは、コマンド・ルールの宣言を削除します。 
                  
構文
DBMS_MACADM.DELETE_COMMAND_RULE( command IN VARCHAR2, object_owner IN VARCHAR2, object_name IN VARCHAR2, clause_name IN VARCHAR2, parameter_name IN VARCHAR2 DEFAULT, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT);
パラメータ
表16-7 DELETE_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | コマンド・ルールで保護されるSQL文。 使用可能なコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されている | 
| 
 | このコマンド・ルールを適用するデータベース・スキーマ。 現行のデータベース・インスタンスで使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されている | 
| 
 | オブジェクト名。ワイルドカード 現行のデータベース・インスタンスで使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されている | 
| 
 | コマンド・ルールの作成に使用されたSQL文の句。 
 | 
| 
 | 
 
 | 
| 
 | コマンド・ルールで定義されているイベント。 
 | 
| 
 | 
 
 | 
| 
 | 
 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 | 
例
コマンド・ルールを削除するときには、パラメータのrule_set_nameとenabledを省略して、その他のパラメータが前回のコマンド・ルールの更新時に使用した設定と一致していることを確認してください。DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを問い合せることで、最新の設定を確認できます。 
                     
たとえば、次のコマンド・ルールを作成するとします。
BEGIN DBMS_MACADM.CREATE_COMMAND_RULE( command => 'SELECT', rule_set_name => 'Enabled', object_owner => 'OE', object_name => 'ORDERS', enabled => DBMS_MACUTL.G_YES, scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
このコマンド・ルールを削除するには、ここに示すパラメータと同じものを使用しますが、rule_set_nameとenabledは省略します。 
                     
BEGIN DBMS_MACADM.DELETE_COMMAND_RULE( command => 'SELECT', object_owner => 'OE', object_name => 'ORDERS', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
次の例は、ALTER SESSIONコマンド・ルールを削除する方法を示しています。
                     
BEGIN DBMS_MACADM.DELETE_COMMAND_RULE( command => 'ALTER SESSION', object_owner => '%', object_name => '%', clause_name => 'SET', parameter_name => 'EVENTS', event_name => 'TRACE', component_name => 'GCS', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
16.6 DELETE_CONNECT_COMMAND_RULEプロシージャ
DELETE_CONNECT_COMMAND_RULEプロシージャは、CREATE_CONNECT_COMMAND_RULEプロシージャで作成されたCONNECTコマンド・ルールを削除します。 
                  
構文
DBMS_MACADM.DELETE_CONNECT_COMMAND_RULE( user_name IN VARCHAR2, scope IN NUMBER DEFAULT);
パラメータ
表16-8 DELETE_CONNECT_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | CONNECTコマンド・ルールの適用対象となるユーザー。 このユーザーを確認するには、 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 | 
例
BEGIN DBMS_MACADM.DELETE_CONNECT_COMMAND_RULE( user_name => 'PSMITH', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
16.7 DELETE_SESSION_EVENT_CMD_RULEプロシージャ
DELETE_SESSION_EVENT_CMD_RULEプロシージャは、イベントに関連付けられているセッション・コマンド・ルールを削除します。 
                  
構文
DBMS_MACADM.DELETE_SESSION_EVENT_CMD_RULE( event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT);
パラメータ
表16-9 DELETE_SESSION_EVENT_CMD_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | セッション・イベント・コマンド・ルールで定義されているイベント。 既存のコマンド・ルールについては、DBA_DV_COMMAND_RULEビューを参照してください。 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 | 
例
次の例では、マルチテナント環境のアプリケーション・ルートで共通セッション・イベント・コマンド・ルールを削除する方法を示します。このプロシージャを実行するユーザーは、CDBルート内の共通ユーザーである必要があります。パラメータを指定するときは、コマンド・ルールを最後に更新したときに使用したパラメータとそれらが正確に一致することを確認します。コマンド・ルールの現在の設定を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。
BEGIN DBMS_MACADM.DELETE_SESSION_EVENT_CMD_RULE( event_name => '47999', scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
16.8 DELETE_SYSTEM_EVENT_CMD_RULEプロシージャ
DELETE_SYSTEM_EVENT_CMD_RULEプロシージャは、イベントに関連付けられているシステム・コマンド・ルールを削除します。 
                  
構文
DBMS_MACADM.DELETE_SYSTEM_EVENT_CMD_RULE( event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT);
パラメータ
表16-10 DELETE_SYSTEM_EVENT_CMD_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | システム・イベント・コマンド・ルールで定義されているイベント。 既存のコマンド・ルールについては、DBA_DV_COMMAND_RULEビューを参照してください。 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 | 
例
次の例では、マルチテナント環境のアプリケーション・ルートで共通システム・イベント・コマンド・ルールを削除する方法を示します。このプロシージャを実行するユーザーは、CDBルート内の共通ユーザーである必要があります。パラメータを指定するときは、コマンド・ルールを最後に更新したときに使用したパラメータとそれらが正確に一致することを確認します。コマンド・ルールの現在の設定を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。
BEGIN DBMS_MACADM.DELETE_SYSTEM_EVENT_CMD_RULE( event_name => 'TRACE', component_name => 'DV', action_name => '', scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
16.9 UPDATE_COMMAND_RULEプロシージャ
UPDATE_COMMAND_RULEプロシージャは、コマンド・ルールの宣言を更新します。 
                  
マルチテナント環境では、共通およびローカルの両方のコマンド・ルールを更新できます。
構文
DBMS_MACADM.UPDATE_COMMAND_RULE( command IN VARCHAR2, rule_set_name IN VARCHAR2, object_owner IN VARCHAR2, object_name IN VARCHAR2, enabled IN VARCHAR2, privilege_scope IN NUMBER, clause_name IN VARCHAR2, parameter_name IN VARCHAR2 DEFAULT, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
パラメータ
表16-11 UPDATE_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | 更新するコマンド・ルール 次の項も参照してください。 
 | 
| 
 | このコマンド・ルールに関連付けるルール・セットの名前。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」で説明されている | 
| 
 | このコマンド・ルールを適用するデータベース・スキーマ。 使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されている | 
| 
 | オブジェクト名。(ワイルドカード%を使用できます。コマンド・ルールで保護されるオブジェクトの詳細は、「コマンド・ルールの作成」の「オブジェクト名」を参照)。 使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | 廃止されたパラメータ | 
| 
 | コマンド・ルールの作成に使用されたSQL文の句。たとえば、 
 | 
| 
 | 
 
 | 
| 
 | コマンド・ルールで定義されているイベント。たとえば、 
 | 
| 
 | 
 
 | 
| 
 | 
 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合は | 
例
次の例では、HR.EMPLOYEESスキーマを保護する単純なコマンド・ルールを作成する方法を示します。
                     
BEGIN DBMS_MACADM.UPDATE_COMMAND_RULE( command => 'SELECT', rule_set_name => 'Enabled', object_owner => 'HR', object_name => 'EMPLOYEES', enabled => DBMS_MACUTL.G_SIMULATION, scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
この例では、ALTER SESSION SQL文に基づく、より複雑なコマンド・ルールを更新する方法を示します。
                     
BEGIN DBMS_MACADM.UPDATE_COMMAND_RULE( command => 'ALTER SESSION', rule_set_name => 'Enabled', object_owner => '%', object_name => '%', enabled => 's', clause_name => 'SET', parameter_name => 'EVENTS', event_name => 'TRACE', component_name => 'GCS', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
16.10 UPDATE_CONNECT_COMMAND_RULEプロシージャ
UPDATE_CONNECT_COMMAND_RULEプロシージャは、CREATE_CONNECT_COMMAND_RULEプロシージャで作成されたCONNECTコマンド・ルールを更新します。 
                  
構文
DBMS_MACADM.UPDATE_CONNECT_COMMAND_RULE( user_name IN VARCHAR2, rule_set_name IN VARCHAR2, enabled IN VARCHAR2, scope IN NUMBER DEFAULT);
パラメータ
表16-12 UPDATE_CONNECT_COMMAND_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | CONNECTコマンド・ルールの適用対象となるユーザー。 マルチテナント環境では、ルートでこのプロシージャを実行した場合、 マルチテナント環境では、このユーザーが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルまたは共通であることを確認します。 既存のコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されている 現在のインスタンス内の既存のデータベース・ユーザーを確認するには、Oracle Databaseリファレンスで説明されている、 | 
| 
 | このコマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
例
BEGIN DBMS_MACADM.UPDATE_CONNECT_COMMAND_RULE( rule_set_name => 'Allow Sessions', user_name => 'PSMITH', enabled => 'DBMS_MACUTL.G_YES', scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
16.11 UPDATE_SESSION_EVENT_CMD_RULEプロシージャ
UPDATE_SESSION_EVENT_CMD_RULEプロシージャは、ALTER SESSION文に基づいて、セッション・イベント・コマンド・ルールを更新します。 
                  
マルチテナント環境では、共通およびローカルの両方のセッション・イベント・コマンド・ルールを更新できます。
構文
DBMS_MACADM.UPDATE_SESSION_EVENT_CMD_RULE( rule_set_name IN VARCHAR2, enabled IN VARCHAR2, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
パラメータ
表16-13 UPDATE_SESSION_EVENT_CMD_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、セッション・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールが | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合は | 
例
次の例では、マルチテナント環境で共通セッション・イベント・コマンド・ルールを更新する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているユーザー名またはルール・セットは、共通である必要があります。
BEGIN DBMS_MACADM.UPDATE_SESSION_EVENT_CMD_RULE( rule_set_name => 'Allow Sessions', event_name => '47999', enabled => DBMS_MACUTL.G_NO, scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
16.12 UPDATE_SYSTEM_EVENT_CMD_RULEプロシージャ
UPDATE_SYSTEM_EVENT_CMD_RULEプロシージャは、ALTER SYSTEM文に基づいて、システム・イベント・コマンド・ルールを更新します。
                  
マルチテナント環境では、共通およびローカルの両方のセッション・イベント・コマンド・ルールを更新できます。
構文
DBMS_MACADM.UPDATE_SYSTEM_EVENT_CMD_RULE( rule_set_name IN VARCHAR2, enabled IN VARCHAR2, event_name IN VARCHAR2 DEFAULT, component_name IN VARCHAR2 DEFAULT, action_name IN VARCHAR2 DEFAULT, scope IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
パラメータ
表16-14 UPDATE_SYSTEM_EVENT_CMD_RULEのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、システム・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。 現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されている | 
| 
 | 次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。 
 | 
| 
 | コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールが | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 | マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。 
 アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合は | 
例
次の例では、マルチテナント環境で共通システム・イベント・コマンド・ルールを更新する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているユーザー名またはルール・セットは、共通である必要があります。
BEGIN DBMS_MACADM.UPDATE_SYSTEM_EVENT_CMD_RULE( rule_set_name => 'Disabled', event_name => 'TRACE', component_name => 'DV', enabled => 'n', scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /