日本語PDF

16 Oracle Database Vaultコマンド・ルールのAPI

DBMS_MACADM PL/SQLパッケージは、コマンド・ルールを構成するためのプロシージャを提供します。

DV_OWNERロールまたはDV_ADMINロールを付与されているユーザーのみがこれらのプロシージャを使用できます。

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,
 parameter_name  IN VARCHAR2,
 event_name      IN VARCHAR2,
 component_name  IN VARCHAR2,
 action_name     IN VARCHAR2,
 scope           IN NUMBER DEFAULT);

パラメータ

表16-1 CREATE_COMMAND_RULEのパラメータ

パラメータ 説明

command

保護するSQL文。

次の項も参照してください。

rule_set_name

このコマンド・ルールに関連付けるルール・セットの名前。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

object_owner

このコマンド・ルールを適用するデータベース・スキーマ。SELECTINSERTUPDATEDELETEおよびEXECUTE文以外は、ワイルドカード%を使用できます。

使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されているDBA_USERSビューを問い合せます。

詳細は、「コマンド・ルールの作成」の「オブジェクト所有者」も参照してください。

object_name

コマンド・ルールで保護されるオブジェクト。(ワイルドカード%を使用できます。コマンド・ルールで保護されるオブジェクトの詳細は、「コマンド・ルールの作成」の「オブジェクト名」を参照)。

使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されているALL_OBJECTSビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy (Yes)

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

privilege_scope

廃止されたパラメータ

clause_name

コマンド・ルールの作成に使用されたSQL文の句。たとえば、ALTER SESSION SQL文のコマンド・ルールに、SET句をclause_nameパラメータとして含めることができます。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

parameter_name

clause_nameパラメータからのパラメータ。たとえば、ALTER SESSIONコマンド・ルールの場合は、clause_nameSETだと、parameter_nameEVENTSに設定できます。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

event_name

コマンド・ルールで定義されているイベント。たとえば、ALTER SESSIONコマンド・ルールで、clause_nameSETを、parameter_nameとしてEVENTSを使用しているとします。トレース・イベントを追跡する場合、event_nameTRACEに設定できます。

parameterパラメータがEVENTSに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

component_name

event_name設定のコンポーネントたとえば、TRACEイベントの場合は、component_nameGCSにできます。

parameterパラメータがEVENTSに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

action_name

component_name設定のアクション

parameterパラメータがEVENTSに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

ALTER SYSTEMコマンド・ルール設定

表16-2に、ALTER SYSTEMコマンド・ルール設定を示します。

表16-2 ALTER SYSTEMコマンド・ルール設定

clause_name parameter_name — パラメータ値

ARCHIVE LOG

  • ALLsequence_number

  • CHANGEchange_number

  • CURRENT — 該当なし

  • GROUPgroup_number

  • LOGFILElog_file_name

  • NEXT — 該当なし

  • SEQUENCE — 該当なし

CHECK DATAFILES

該当なし — globalまたはlocal

CHECKPOINT

該当なし — globalまたはlocal

COPY LOGFILE

該当なし — 該当なし

DISTRIBUTED RECOVERY

該当なし — enableまたはdisable

DUMP

  • DATAFILE — 該当なし

  • FLASHBACK — 該当なし

  • LOGFILE — 該当なし

  • REDO — 該当なし

  • TEMPFILE — 該当なし

  • UNDO — 該当なし

END SESSION

DISCONNECT SESSION — 該当なし

KILL SESSION — 該当なし

FLUSH

BUFFER_CACHE — 該当なし

GLOBAL CONTEXT — 該当なし

REDOtarget_db_name

SHARED_POOL — 該当なし

QUIESCE

QUIESCE RESTRICTED — 該当なし

UNQUIESCE — 該当なし

REFRESH

LDAP_REGISTRATION — 該当なし

REGISTER

該当なし — 該当なし

RESET

initialization_parameter_name — 該当なし

RESUME

該当なし — 該当なし

SECURITY

RESTRICTED SESSIONenableまたはdisable

SET ENCRYPTION KEY — 該当なし

SET ENCRYPTION WALLETopenまたはclose

SET

EVENTSevent_string

GLOBAL_TOPIC_ENABLEDtrueまたはfalse

initialization_parameter_nameparameter_value

LDAP_REGISTRATION_ENABLEDtrueまたはfalse

LDAP_REG-SYNC_INTERVAL — 数値

SINGLETASK DEBUG — 該当なし

USE_STORED_OUTLINEStruefalseまたはcategory_name

SHUTDOWN DISPPATCHER

該当なし — dispatcher_name

SWITCH LOGFILE

該当なし — all or none

SUSPEND

該当なし — 該当なし

TX RECOVERY

該当なし — enableまたはdisable

ALTER SESSIONコマンド・ルール設定

表16-3に、ALTER SESSIONコマンド・ルール設定を示します。

表16-3 ALTER SESSIONコマンド・ルール設定

clause_name parameter_name — パラメータ値

ADVISE

該当なし — COMMITROLLBACKまたはNOTHING

CLOSE DATABASE LINK

該当なし — database_link

COMMIT IN PROCEDURE

該当なし — ENABLEまたはDISABLE

GUARD

該当なし — ENABLEまたはDISABLE

ILM

ROW ACCESS TRACKING — 該当なし

ROW MODIFICATION TRACKING — 該当なし

LOGICAL REPLICATION

該当なし — 該当なし

PARALLEL DML

該当なし — ENABLEDISABLEまたはFORCE

PARALLEL DDL

該当なし — ENABLEDISABLEまたはFORCE

PARALLEL QUERY

該当なし — ENABLEDISABLEまたはFORCE

RESUMABLE

該当なし — ENABLEまたはDISABLE

SYNC WITH PRIMARY

該当なし — 該当なし

SET

APPLICATION ACTIONaction_name

APPLICATION MODULEmodule_name

CONSTRAINTSIMMEDIATEDEFERREDまたはDEFAULT

CONTAINERcontainer_name

CURRENT SCHEMAschema_name

EDITIONedition_name

ERROR ON OVERLAP TIMETRUEまたはFALSE

EVENTSevent_string

FLAGGEROFFFULLINTERMEDIATEENTRY

initialization_parameter_nameparameter_name

INSTANCEinstance_number

ISOLATION_LEVELSERIALIZABLEまたはREAD COMMITTED

ROW_ARCHIVAL_VISABILITYACTIVEまたはALL

SQL_TRANSFORMATION_PROFILEprofile_name

STANDBY_MAX_DATA_DELAYNONEnumber

TIME_ZONELOCALDBTIMEZONEまたはother_value

USE_PRIVATE_OUTLINESTRUEFALSEまたはcategory_name

USE_STORED_OUTLINESTRUEFALSEまたはcategory_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 SESSION SQL文の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 SESSION PL/SQL文のSET句を使用するようALTER SESSIONコマンド・ルールが設定されます。

  • parameter_nameは、SET句のERROR_ON_OVERLAP_TIMEパラメータに設定されます。

  • scopeでは、コマンド・ルールを共通コマンド・ルールにするよう設定するために、DBMS_MACUTL.G_SCOPE_COMMON定数が使用されます。このコマンド・ルールはマルチテナント環境のアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているルールまたはルール・セットは、共通である必要があります。

    コマンド・ルールをローカルで作成している場合は、scopeDBMS_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_namecomponent_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のパラメータ

パラメータ 説明

user_name

CONNECTコマンド・ルールの適用対象となるユーザー。%ワイルドカードを入力した場合は、CONNECTコマンド・ルールがすべてのデータベース・ユーザーに適用されます。

マルチテナント環境では、ルートでこのプロシージャを実行した場合、%を指定すると、すべての共通ユーザーに適用されます。PDBでプロシージャを実行すると、それは、このPDBにアクセスできるすべてのローカルおよび共通ユーザーに適用されます。一方は共通で一方はローカルという2つのコマンド・ルールがあり、それらが両方とも同一オブジェクトに適用される場合は、操作を成功させるために、両方とも正しく評価する必要があります。

マルチテナント環境では、このユーザーが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルまたは共通であることを確認します。

現在のインスタンス内の既存のデータベース・ユーザーを確認するには、Oracle Databaseリファレンスで説明されている、DBA_USERSビューを問い合せます。

rule_set_name

このコマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy (Yes)

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通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のパラメータ

パラメータ 説明

rule_set_name

コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、セッション・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy (Yes)

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

event_name

コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールがALTER SESSION SET EVENTS event_name文に対応できるようになります。たとえば、トレース・イベントを追跡するには、event_nameTRACEに設定します。

component_name

event_name設定のコンポーネント例の設定は、DVOLSまたはGCSです。

ORADEBUG DOC COMPONENT RDBMSをユーザーSYSとして発行することで、有効なコンポーネント名を確認できます。出力には、component_name設定に使用できる親および子コンポーネントが表示されます。たとえば、XS (親)とXSSESSION (XSの子)の両方が有効なコンポーネント名です。親コンポーネントを選択すると、コマンド・ルールがそれとその子コンポーネントに適用されます。

action_name

component_name設定のアクション

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。デフォルトはFALSEです。

次の例では、マルチテナント環境で共通セッション・イベント・コマンド・ルールを作成する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーは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パラメータ

パラメータ 説明

rule_set_name

コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、システム・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

event_name

コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールがALTER SYSTEM SET EVENTS event_nameに対応できるようになります。たとえば、トレース・イベントを追跡するには、event_nameTRACEに設定します。

component_name

event_name設定のコンポーネント例の設定は、DVOLSまたはGCSです。

ORADEBUG DOC COMPONENT RDBMSをユーザーSYSとして発行することで、有効なコンポーネント名を確認できます。出力には、component_name設定に使用できる親および子コンポーネントが表示されます。たとえば、XS (親)とXSSESSION (XSの子)の両方が有効なコンポーネント名です。親コンポーネントを選択すると、コマンド・ルールがそれとその子コンポーネントに適用されます。

action_name

component_name設定のアクション

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。デフォルトはFALSEです。

次の例では、マルチテナント環境で共通システム・イベント・コマンド・ルールを作成する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーは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のパラメータ

パラメータ 説明

command

コマンド・ルールで保護されるSQL文。

使用可能なコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

object_owner

このコマンド・ルールを適用するデータベース・スキーマ。

現行のデータベース・インスタンスで使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されているDBA_USERSビューを問い合せます。

object_name

オブジェクト名。ワイルドカード%を使用できます。

現行のデータベース・インスタンスで使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されているALL_OBJECTSビューを問い合せます。

clause_name

コマンド・ルールの作成に使用されたSQL文の句。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

parameter_name

clause_nameパラメータからのパラメータ。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

event_name

コマンド・ルールで定義されているイベント。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

component_name

event_name設定のコンポーネント

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

action_name

component_name設定のアクション

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

コマンド・ルールを削除するときには、パラメータのrule_set_nameenabledを省略して、その他のパラメータが前回のコマンド・ルールの更新時に使用した設定と一致していることを確認してください。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_nameenabledは省略します。

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のパラメータ

パラメータ 説明

user_name

CONNECTコマンド・ルールの適用対象となるユーザー。

このユーザーを確認するには、DBA_DV_COMMAND_RULEビューのOBJECT_OWNERフィールドを問い合せます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

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のパラメータ

パラメータ 説明

event_name

セッション・イベント・コマンド・ルールで定義されているイベント。

既存のコマンド・ルールについては、DBA_DV_COMMAND_RULEビューを参照してください。

component_name

event_name設定のコンポーネント

action_name

component_name設定のアクション

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

次の例では、マルチテナント環境のアプリケーション・ルートで共通セッション・イベント・コマンド・ルールを削除する方法を示します。このプロシージャを実行するユーザーは、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のパラメータ

パラメータ 説明

event_name

システム・イベント・コマンド・ルールで定義されているイベント。

既存のコマンド・ルールについては、DBA_DV_COMMAND_RULEビューを参照してください。

component_name

event_name設定のコンポーネント

action_name

component_name設定のアクション

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

次の例では、マルチテナント環境のアプリケーション・ルートで共通システム・イベント・コマンド・ルールを削除する方法を示します。このプロシージャを実行するユーザーは、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のパラメータ

パラメータ 説明

command

更新するコマンド・ルール

次の項も参照してください。

rule_set_name

このコマンド・ルールに関連付けるルール・セットの名前。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

object_owner

このコマンド・ルールを適用するデータベース・スキーマ。

使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されているDBA_USERSビューを問い合せます。詳細は、「コマンド・ルールの作成」の「オブジェクト所有者」も参照してください。

object_name

オブジェクト名。(ワイルドカード%を使用できます。コマンド・ルールで保護されるオブジェクトの詳細は、「コマンド・ルールの作成」の「オブジェクト名」を参照)。

使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されているALL_OBJECTSビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

privilege_scope

廃止されたパラメータ

clause_name

コマンド・ルールの作成に使用されたSQL文の句。たとえば、ALTER SESSION SQL文のコマンド・ルールに、SET句をclause_nameパラメータとして含めることができます。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

parameter_name

clause_nameパラメータからのパラメータ。たとえば、ALTER SESSIONコマンド・ルールの場合は、clause_nameSETだと、parameter_nameEVENTSに設定できます。

ALTER SYSTEMおよびALTER SESSIONのコマンド・ルールにのみ適用されます。

event_name

コマンド・ルールで定義されているイベント。たとえば、clause_nameSETを、parameter_nameとしてEVENTSを使用するALTER SESSIONコマンド・ルールの場合に、event_nameTRACEに設定できます。

parameterパラメータがeventsに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

component_name

event_name設定のコンポーネントたとえば、TRACEイベントの場合は、component_nameGCSにできます。

parameterパラメータがeventsに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

action_name

component_name設定のアクションたとえば、component_nameGCSに設定されている場合は、action_name設定をDISK HIGHにできます。

parameterパラメータがeventsに設定されているALTER SYSTEMおよびALTER SESSIONコマンド・ルールにのみ、適用されます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。

次の例では、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のパラメータ

パラメータ 説明

user_name

CONNECTコマンド・ルールの適用対象となるユーザー。%ワイルドカードを入力した場合は、CONNECTコマンド・ルールがすべてのデータベース・ユーザーに適用されます。

マルチテナント環境では、ルートでこのプロシージャを実行した場合、%を指定すると、すべての共通ユーザーに適用されます。PDBでプロシージャを実行すると、それは、このPDBにアクセスできるすべてのローカルおよび共通ユーザーに適用されます。一方は共通で一方はローカルという2つのコマンド・ルールがあり、それらが両方とも同一オブジェクトに適用される場合は、操作を成功させるために、両方とも正しく評価する必要があります。

マルチテナント環境では、このユーザーが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルまたは共通であることを確認します。

既存のコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

現在のインスタンス内の既存のデータベース・ユーザーを確認するには、Oracle Databaseリファレンスで説明されている、DBA_USERSビューを問い合せます。

rule_set_name

このコマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、CONNECTコマンド・ルールが共通である場合は共通、CONNECTコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられた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のパラメータ

パラメータ 説明

rule_set_name

コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、セッション・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

event_name

コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールがALTER SESSION SET EVENTS event_name文に対応できるようになります。たとえば、トレース・イベントを追跡するには、event_nameTRACEに設定します。

component_name

event_name設定のコンポーネント例の設定は、DVOLSまたはGCSです。

ORADEBUG DOC COMPONENT RDBMSをユーザーSYSとして発行することで、有効なコンポーネント名を確認できます。出力には、component_name設定に使用できる親および子コンポーネントが表示されます。たとえば、XS (親)とXSSESSION (XSの子)の両方が有効なコンポーネント名です。親コンポーネントを選択すると、コマンド・ルールがそれとその子コンポーネントに適用されます。

action_name

component_name設定のアクション

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。

次の例では、マルチテナント環境で共通セッション・イベント・コマンド・ルールを更新する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーは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のパラメータ

パラメータ 説明

rule_set_name

コマンド・ルールに関連付けるルール・セットの名前。マルチテナント環境では、このルール・セットが、システム・イベント・コマンド・ルールが共通である場合は共通、そのコマンド・ルールがローカルである場合はローカルであることを確認してください。

現行のデータベース・インスタンスで既存のルール・セットを確認するには、「DBA_DV_RULE_SETビュー」で説明されているDBA_DV_RULE_SETビューを問い合せます。

enabled

次のいずれかのオプションを指定してコマンド・ルールのステータスを設定します。

  • コマンド・ルールを有効にするには(デフォルト)、DBMS_MACUTL.G_YESまたはy

  • シミュレーション・ログでの違反の取得など、コマンド・ルールを無効にするには、DBMS_MACUTL.G_NOまたはn

  • SQL文の実行を可能にするがシミュレーション・ログで違反を捕捉するには、DBMS_MACUTL.G_SIMULATIONまたはs

event_name

コマンド・ルールで定義されているイベント。この設定により、コマンド・ルールがALTER SYSTEM SET EVENTS event_nameに対応できるようになります。たとえば、トレース・イベントを追跡するには、event_nameTRACEに設定します。

component_name

event_name設定のコンポーネント例の設定は、DVOLSまたはGCSです。

ORADEBUG DOC COMPONENT RDBMSをユーザーSYSとして発行することで、有効なコンポーネント名を確認できます。出力には、component_name設定に使用できる親および子コンポーネントが表示されます。たとえば、XS (親)とXSSESSION (XSの子)の両方が有効なコンポーネント名です。親コンポーネントを選択すると、コマンド・ルールがそれとその子コンポーネントに適用されます。

action_name

component_name設定のアクション

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

アプリケーション・ルートで共通コマンド・ルールを更新し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。たとえば:

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。

次の例では、マルチテナント環境で共通システム・イベント・コマンド・ルールを更新する方法を示します。このコマンド・ルールはアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーは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; 
/