このリリースでのOracle Databaseデータ・リダクション・ガイドの変更点

この章の内容は次のとおりです:

Oracle Data Redactionの機能拡張

このリリースには、既存機能の最適化や以前の制限事項の削除など、Oracle Data Redactionに対する多数の機能拡張が含まれています。

ビュー内のリダクションされる列に対する複雑式

このリリースでは、リダクションされる列を含むSQL式(CONCATSUMTRIMMINまたはMAXなど)を、CREATE VIEW定義またはインライン・ビューのSELECTリストで使用できます。

次の例では、c1にリダクション・ポリシーが定義されています。

例 - SQL式を使用したCreate View文

create view v1 as select sum(c1) sum_c1 from t1 order by c1;
select * from v1;

例 - インライン・ビューのサポート

select * from (select sum(c1) sum_c1 from t1 order by c1);

リダクションされる列での拡張統計およびファンクション索引

Oracle Data Redactionでは、Oracle Database 23ai以降でのファンクションベース索引および拡張統計のベース列でのリダクション・ポリシーがサポートされています。

これにより、お客様は、データベース・パフォーマンス機能をデータベース・セキュリティ機能と組み合せることができます。ファンクションベース索引と拡張統計の詳細は、Oracle Database開発ガイドおよびOracle Database SQLチューニング・ガイドを参照してください。

リダクション・ポリシーがある列に対する式でのGROUP BY

このリリースでは、リダクション・ポリシーがある列に対するSQL式をSELECTリストおよびGROUP BY句で使用できます。

GROUP BY句を使用すると、選択した行を各行の値に基づいてグループ化し、各グループのサマリー情報を1行で戻すことができます。次の例では、c1にリダクション・ポリシーが定義されています。

例 - c1にあるリダクション・ポリシーでのGROUP BY

select (c1+5)
from t1
group by (c1+5);

リダクションされる列に対するDISTINCTとORDER BY

このリリースでは、データ・リダクション・ポリシーを含む列に対して、ORDER BY句とともにDISTINCT句を使用できます。

DISTINCT句により、選択された一連の重複行についてはデータベースによってそのコピーが1行のみ返されるようにすることを指定します。

ORDER BY句を使用すると、選択された行が返される順序を指定できます。

次の例では、c1にリダクション・ポリシーが定義されています。

例 - c1にあるリダクション・ポリシーでのDISTINCT

select distinct c1
from t1
order by c1;

副問合せを含む集合演算があるインライン・ビュー

このリリースでは、副問合せを含む集合演算があるインライン・ビューが含まれている問合せでの、データ・リダクション・ポリシーを含む列の使用がサポートされています。

SELECT文のFROM句にある副問合せは、インライン・ビューとも呼ばれます。

リダクションされる列を使用する集合演算子

このリリースでは、集合演算での列に、集合演算子の対応する列にあるリダクション・ポリシーとはプロパティの値が異なるリダクション・ポリシーを含めることができます。

様々なリダクション・ポリシーの特性:
  • 関数タイプ
  • 関数パラメータまたはREGEXPパラメータ
  • ポリシー式
  • 有効フラグ

また、集合演算問合せでは、集合演算の片側にリダクション・ポリシーありの列、集合演算の反対側にリダクション・ポリシーなしの対応する列を含めることができます。

集合演算子により、UNIONUNION ALLINTERSECTINTERSECT ALLEXCEPTEXCEPT ALLMINUSまたはMINUS ALLを使用して2つのSELECT文によって返される複数の行を結合して単一の結果にします。

例 - c1に完全リダクション、c2に部分リダクションがあるSELECT

select c1 from t1
union
select c2 from t1

この問合せの結果は、「リダクション・ポリシーがある列を使用する場合のSQL式および集合演算を含む問合せでのリダクション結果」の説明のとおり、完全にリダクションされます。

リダクション・ポリシーがある列を使用する場合のSQL式および集合演算を含む問合せでのリダクション結果

このリリースでは、リダクション・ポリシーがある列に対するSQL式が問合せのSELECTリストに存在する場合に、基にあるリダクション・タイプに関係なく、そのSQL式の結果が、完全リダクションを使用してリダクションされます。

同様に、リダクション・ポリシーがある列が集合演算のどちらかの側に存在する場合は、基になるリダクション・タイプに関係なく、集合演算の結果が、完全リダクションを使用してリダクションされます。

ポリシー式の最適化

このリリースでは、ポリシー式1=1を使用した場合、それは必ずTRUEになるため評価されません。これにより、ポリシー式1=1を含むリダクション・ポリシーがある列を使用するSELECT問合せの実行中にはパフォーマンスが向上します。

Oracle Data Redactionでアクセス制御を簡素化するスキーマ権限

Oracle Data Redactionでは、Oracle Database 23aiで導入されたスキーマ権限がサポートされています。

この機能拡張は次のとおりです。

  • ADMINISTER REDACTION POLICY権限は、Oracle Database 21cで必要だったCREATE TABLEまたはCREATE ANY TABLEではなく、DBMS_REDACT PL/SQLパッケージを使用するためのシステム権限またはスキーマ権限としてユーザーに付与する必要があります。データ・リダクション・ポリシーを作成および管理するには、DBMS_REDACTパッケージに対するEXECUTE権限に加えて、この権限が必要です。
  • EXEMPT REDACTION POLICY権限は、システム権限またはスキーマ権限のいずれかとして付与できます。

Oracle Data RedactionでのBOOLEANデータ型のサポート

Oracle Data Redactionでは、Oracle Database 23aiで導入されたBOOLEANデータ型がサポートされています。

この機能拡張の一部として、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャに、完全リダクションのデフォルト値FALSEの変更をサポートするための新しいパラメータboolean_valが追加されています。