6.1 Oracle Data Redactionの一般的な使用上の制限事項

Oracle Data Redactionを使用するためには、使用上の制限事項を理解しておくことが重要です。

  • SQL文においてGROUP BY句とSELECTリストで使用される、次の式または関数に、リダクションされる列を含めないでください。
    • JSON演算子
    • XML関数
    • カーソル式でのSQL式
    • コンストラクタ関数
    • ユーザー定義演算子
    • PL/SQL関数
    Oracleではこのような動作はサポートされないため、「ORA-00979: GROUP BYの式ではありません。」のエラーが発生します。これが発生するのは、データ・リダクションによってSELECTリスト内のそれらの式または関数を変更する必要があるが、これが原因で、GROUP BY句を処理するときにそれが見つからなくなる(その時点ではデータ・リダクションによって更新されていない)ためです。その結果、この予期せぬエラー・メッセージが表示されます。
  • SQL文においてDISTINCT句とORDER BY句の両方で使用される、次のSQL式または関数に、リダクションされる列を含めないでください。
    • XML関数
    • カーソル式
    • コンストラクタ関数
    • ユーザー定義演算子
    • PL/SQL関数
    Oracleではこのような動作はサポートされないため、「ORA-01791: SELECT式が無効です。」エラーが発生します。これが発生するのは、内部でデータ・リダクションによってSELECTリスト内のその式を変更する必要があるが、これが原因で、ORDER BY句を処理するときにそれが見つからなくなるためです。その結果、この予期せぬエラー・メッセージが表示されます。
  • Oracleでは、仮想列に対するデータ・リダクション・ポリシーの追加はサポートされていません。

    Oracleでは仮想列のベース列にデータ・リダクション・ポリシーを設定することはサポートされていますが、仮想列自体にデータ・リダクション・ポリシーを適用することはできません。

    SELECT COLUMN_ID, COLUMN_NAME, VIRTUAL_COLUMN
    FROM DBA_TAB_COLS
    WHERE TABLE_NAME = 'table_name_that_you_attempted_to_redact'
    AND VIRTUAL_COLUMN = 'YES'
    ORDER BY COLUMN_ID;