Data Redactionのポリシーを一括で有効化・無効化する方法

この記事ではData Redactionのポリシーを一括で有効化・無効化する方法について解説します。

 Data Redactionのポリシーの有効化・無効化方法

Data Redactionのポリシーの有効化・無効化はそれぞれDBMS_REDACT.DISABLE_POLICYプロシージャ、DBMS_REDACT.ENABLE_POLICYプロシージャを使用して行います。

このプロシージャはポリシー単位で実行するため、リダクションポリシーが多数ある場合は大変な作業になります。

そこで、PL/SQLを使用してすべてのポリシーを有効化、無効化できるようにします。


 ポリシーの一括有効化

すべてのリダクションポリシーを一括で有効化するPL/SQLは以下の通りです。

このPL/SQLをそのまま実行するとポリシーがすべて有効化されます。

BEGIN
  FOR a IN(SELECT object_owner, object_name, policy_name, enable FROM redaction_policies where enable = 'NO' )LOOP
      DBMS_REDACT.ENABLE_POLICY (
      object_schema  => a.object_owner,
      object_name    => a.object_name,
      policy_name    => a.policy_name);
  END LOOP;
END;
/

「redaction_policies」ディクショナリビューから現在無効となっているポリシーの情報を選択し、そのポリシーを有効化します。


 ポリシーの一括無効化

すべてのリダクションポリシーを一括で無効化するPL/SQLは以下の通りです。

このPL/SQLをそのまま実行するとポリシーがすべて無効化されます。

BEGIN
  FOR a IN(SELECT object_owner, object_name, policy_name, enable FROM redaction_policies where enable = 'YES' )LOOP
      DBMS_REDACT.DISABLE_POLICY (
      object_schema  => a.object_owner,
      object_name    => a.object_name,
      policy_name    => a.policy_name);
  END LOOP;
END;
/

「redaction_policies」ディクショナリビューから現在有効となっているポリシーの情報を選択し、そのポリシーを無効化します。