3.11 NULL化リダクション・ポリシーの作成

表またはビューの列の表示された値に対してNULL値を返すOracle Data Redactionポリシーを作成できます。

3.11.1 NULL値を返すポリシーの作成について

DBMS_REDACT.NULLIFY function_typeパラメータは、列内のすべての問合せ結果データをリダクションし、NULL値を置換します。

このファンクションのタイプは、DBMS_REDACT.NULLIFY関数のタイプがサポートするすべてのサポート対象列のデータ型で使用できます。また、データ型CLOBおよびNCLOBもサポートします。DBMS_REDACT.NULLIFYファンクションを使用するには、最初にCOMPATIBLEパラメータが12.2.0.0以上に設定されているようにする必要があります。

3.11.2 NULL化リダクション・ポリシーを作成する構文

DBMS_REDACT.ADD_POLICYプロシージャでは、完全リダクションを実行し、リダクションされた列にNULL値を表示するリダクション・ポリシーを作成できます。

DBMS_REDACT.ADD_POLICYを使用してNULL値を返す構文は次のとおりです。

DBMS_REDACT.ADD_POLICY (
   object_schema           IN VARCHAR2 := NULL, 
   object_name             IN VARCHAR2,
   column_name             IN VARCHAR2 := NULL,
   policy_name             IN VARCHAR2,
   function_type           IN BINARY_INTEGER := NULL,
   expression              IN VARCHAR2,
   enable                  IN BOOLEAN := TRUE);

ここでは次のように指定します:

3.11.3 例: NULL値を返すリダクション・ポリシー

DBMS_REDACT.ADD_POLICYプロシージャは、HR.EMPLOYEES表のCOMMISSION_PCT列にNULL化リダクションを追加します。

expressionパラメータにより、EXEMPT REDACTION POLICYシステムまたはスキーマ権限を付与されているユーザーを除き、この表に問合せをするあらゆるユーザーにポリシーが適用されます。

例3-10では、Oracle Data Redactionポリシーを作成する方法を示します。

例3-10 NULL値を返すリダクション・ポリシー

BEGIN
 DBMS_REDACT.ADD_POLICY(
   object_schema    => 'hr', 
   object_name      => 'employees', 
   column_name      => 'commission_pct',
   policy_name      => 'nullify_com_pct', 
   function_type    => DBMS_REDACT.NULLIFY,
   expression       => '1=1');
END;
/

問合せおよびリダクションされた結果:

SELECT COMMISSION_PCT FROM HR.EMPLOYEES;

COMMISSION_PCT
--------------