11.5 XS_DATA_SECURITY_UTILパッケージ

XS_DATA_SECURITY_UTILパッケージは、ユーザー表への静的ACLの自動リフレッシュをスケジュール、およびACLリフレッシュ・モードをコミット時またはオンデマンド・リフレッシュに変更するユーティリティ・パッケージです。

11.5.1 セキュリティ・モデル

XS_DATA_SECURITY_UTILパッケージは、SYSスキーマに作成されます。このパッケージに含まれるプログラムを実行するには、パッケージに対するEXECUTE権限が必要です。

11.5.2 定数

次の値はACLMVリフレッシュ・モードに対して有効です。

ACLMV_ON_DEMAND  CONSTANT VARCHAR2(9) := 'ON DEMAND';
ACLMV_ON_COMMIT  CONSTANT VARCHAR2(9) := 'ON COMMIT';

静的ACLMVに対するリフレッシュのタイプは次のとおりです。

XS_ON_COMMIT_MV  CONSTANT BINARY_INTEGER := 0;
XS_ON_DEMAND_MV  CONSTANT BINARY_INTEGER := 1;
XS_SCHEDULED_MV  CONSTANT BINARY_INTEGER := 2;

静的ACLMVのタイプは次のとおりです。

XS_SYSTEM_GENERATED_MV  CONSTANT BINARY_INTEGER := 0;
XS_USER_SPECIFIED_MV    CONSTANT BINARY_INTEGER := 1;

11.5.3 XS_DATA_SECURITY_UTILサブプログラムの要約

表11-7 XS_DATA_SECURITY_UTILサブプログラムの要約

サブプログラム 簡単な説明

SCHEDULE_STATIC_ACL_REFRESHプロシージャ

ユーザー表に対する静的ACLの自動リフレッシュをスケジュールします

ALTER_STATIC_ACL_REFRESHプロシージャ

ACLリフレッシュ・モードをコミット時またはオンデマンド・リフレッシュに変更します。

この項では次のXS_DATA_SECURITY_UTILサブプログラムについて説明します。

11.5.3.1 SCHEDULE_STATIC_ACL_REFRESHプロシージャ

SCHEDULE_STATIC_ACL_REFRESHプロシージャを使用して、ユーザー表に対する静的ACLの自動リフレッシュを起動またはスケジュールします。start_dateおよびrepeat_intervalパラメータにNULL値が渡された場合は、リフレッシュを即時に開始できます。

現在のユーザーが使用可能な表またはビューに対して実行されたすべての最新のACLリフレッシュ・ジョブのステータスを調べるには、ALL_XDS_LATEST_ACL_REFSTATDBA_XDS_LATEST_ACL_REFSTATおよびUSER_XDS_LATEST_ACL_REFSTATデータ・ディクショナリ・ビューを問い合せます。すべての静的ACLリフレッシュ・ジョブ・ステータス履歴は、ALL_XDS_ACL_REFSTATDBA_XDS_ACL_REFSTATおよびUSER_XDS_ACL_REFSTATデータ・ディクショナリ・ビューにあります。

構文

XS_DATA_SECURITY_UTIL.SCHEDULE_STATIC_ACL_REFRESH (
  schema_name      IN VARCHAR2 DEFAULT NULL,
  table_name       IN VARCHAR2,
  start_date       IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
  repeat_interval  IN VARCHAR2 DEFAULT NULL,
  comments         IN VARCHAR2 DEFAULT NULL );

パラメータ

パラメータ 説明

schema_name

表が属するスキーマの名前を指定します。

table_name

静的ACLリフレッシュに対して表を一意に識別するために前述のスキーマ名とともに使用される表名。

start_date

この属性は、このリフレッシュの実行がスケジュールされている最初の日付を指定します。ファンクションが繰り返し呼び出される場合は、最後に指定されたstart_daterepeat_intervalがジョブのスケジュールに使用されます。即時コール、コミット時またはリフレッシュ・ジョブによって実行されたACLリフレッシュの各実行結果がXDS_ACL_REFSTATに追加されます。

start_dateおよびrepeat_intervalNULLのままの場合は、リフレッシュが即時に起動され、既存のリフレッシュ・スケジュールが消去されます。即時リフレッシュでは、リフレッシュ・モードを変更しないため、行はXDS_ACL_REFRESHに追加されません。

repeat_interval

リフレッシュを繰り返す間隔を指定します。反復間隔は、DBMS_SCHEDULERパッケージのカレンダ構文またはPL/SQL式を使用して指定できます。カレンダ構文の使用の詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。

指定された式を評価して、リフレッシュの次回実行時を決定します。repeat_intervalを指定しない場合、ジョブは、指定した開始日に1回のみ実行されます。

start_dateおよびrepeat_intervalを使用し、end_dateをデフォルトのNULLにしたDBMS_SCHEDULERパッケージを使用してリフレッシュ・ジョブを作成します。

Comments

ジョブのコメントを指定します。デフォルトでは、この属性はNULLです

SYS.XS_DATA_SECURITY_UTIL.SCHEDULE_STATIC_ACL_REFRESH('aclmvuser', 'sales', SYSTIMESTAMP, 'freq=hourly; interval=2');

11.5.3.2 ALTER_STATIC_ACL_REFRESHプロシージャ

ALTER_STATIC_ACL_REFRESHプロシージャを使用して、ACLリフレッシュ・モードをコミット時またはオンデマンド・リフレッシュに変更します。

構文

XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH (
  schema_name      IN VARCHAR2 DEFAULT NULL,
  table_name       IN VARCHAR2,
  refresh_mode     IN VARCHAR2);

パラメータ

パラメータ 説明

schema_name

表が属するスキーマの名前を指定します。

table_name

静的ACLリフレッシュ・モードを変更する表を一意に識別するためにスキーマ名とともに使用される表名。

refresh_mode

ON COMMITまたはON DEMAND

SYS.XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH('aclmvuser','sales', refresh_mode=>'ON COMMIT');