4.4 Oracle Data Pumpを使用したOracle Data Redactionポリシーおよびオブジェクト転送

データ・リダクション・ポリシーがあるオブジェクトは、データ・ポンプの操作に影響を与える可能性があります。

4.4.1 Oracle Data RedactionのためのOracle Data Pumpセキュリティ・モデル

DATAPUMP_EXP_FULL_DATABASEロールには、強力なEXEMPT REDACTION POLICYシステム権限が含まれます。

デフォルトでは、DBAロールにDATAPUMP_EXP_FULL_DATABASEロールおよび DATAPUMP_IMP_FULL_DATABASEロールが付与されることに注意してください。

これによって、これらのロールを付与されたユーザーは、データ・リダクション・ポリシーから除外されます。このため、オブジェクトに定義されているデータ・リダクション・ポリシーでオブジェクトをエクスポートすると、保護されている表の実際のデータは、リダクションされずにData Pumpのターゲット・システムにコピーされます。DBAロールを含むこれらのロールを持つユーザーは、ターゲット・システム内の実際のデータを参照できます。

ただし、デフォルトでは、Data Pumpのソース・システムの任意の表およびビューに関連付けられたすべてのデータ・リダクション・ポリシーも(オブジェクト自体とともに)エクスポートおよびインポート操作に含まれ、ターゲット・システムのオブジェクトに適用されるため、ユーザーがターゲット・システム内のオブジェクトを問い合せると、データはリダクションされます。

4.4.2 Oracle Data Redactionポリシーが定義されているオブジェクトのエクスポートおよびインポート

Oracle Data Redactionポリシーがすでに定義されているオブジェクトをエクスポートできます。

4.4.2.1 Oracle Data Pumpで使用されるオブジェクト・タイプの検索

Oracle Data Redactionポリシーが定義されているオブジェクトをエクスポートする前に、Oracle Data Pumpで使用されるオブジェクト・タイプを検索する必要があります。

これらのオブジェクト・タイプを検索した後、これらのオブジェクト・タイプをEXPDPユーティリティのINCLUDEディレクティブに対するパラメータとして使用して、その特定のオブジェクト・タイプのメタデータのみをダンプ・ファイルに選択的にエクスポートできます。

  • オブジェクト・タイプを検索するには、DATABASE_EXPORT_OBJECTSビューを問い合せます。

例:

SELECT OBJECT_PATH
FROM DATABASE_EXPORT_OBJECTS
WHERE OBJECT_PATH LIKE 'RADM_%'; 

次のような出力が表示されます。

OBJECT_PATH
------------
RADM_FPTM
RADM_POLICY
RADM_POLICY_EXPR

4.4.2.2 データ・リダクション・ポリシーに関連するデータ・ディクショナリ・メタデータのみのエクスポート

Oracle Database Pumpメタデータ・フィルタを使用して、データ・ディクショナリ・メタデータのみをエクスポートできます。

この種のデータ・ポンプ・エクスポートは、開発、テストおよび本番の各データベース間でデータ・リダクション・ポリシーおよび設定の同じセットを使用する必要がある場合などに使用できます。content=metadata_onlyフラグが指定されているため、ダンプ・ファイルに実際のデータは含まれません。

  • データ・リダクション・ポリシー、完全リダクション設定およびポリシー式に関連するデータ・ディクショナリ・メタデータのみをエクスポートするには、RADM_POLICYRADM_FPTMおよびRADM_POLICY_EXPRを次のようなEXPDPユーティリティ・コマンドに含めます:

    expdp system/password \
    full=y \
    COMPRESSION=NONE \
    content=metadata_only \
    INCLUDE=RADM_FPTM,RADM_POLICY,RADM_POLICY_EXPR \
    directory=my_directory \
    job_name=my_job_name \
    dumpfile=my_data_redaction_policy_metadata.dmp
    

4.4.2.3 IMPDPのINCLUDEパラメータを使用したデータ・ディクショナリ・メタデータのみのインポート

Oracle Database Pumpメタデータ・フィルタを使用して、データ・ディクショナリ・メタデータのみをインポートできます。

  • データ・リダクション・ポリシー、完全リダクション設定およびポリシー式に関連するデータ・ディクショナリ・メタデータのみをインポートするには、RADM_POLICYRADM_FPTMおよびRADM_POLICY_EXPRを次のようなIMPDPユーティリティ・コマンドに含めます:

    impdp system/password \
    full=y \
    content=metadata_only \
    INCLUDE=RADM_FPTM,RADM_POLICY,RADM_POLICY_EXPR \
    directory=my_directory \
    job_name=my_job_name \
    dumpfile=my_data_redaction_policy_metadata.dmp

4.4.3 EXPDPユーティリティのaccess_methodパラメータを使用したデータのエクスポート

Oracle Data Pumpによって、データ・リダクション・ポリシーのあるオブジェクトを含むスキーマからデータをエクスポートできます。

Oracle Data Pumpを使用して、新しいデータ・ポンプのデフォルト設定(direct_path)に基づいてデータベースの全体エクスポート操作を実行し、理解できないエラー・メッセージが返された場合、この項を使用して、エラーをより正確に理解できるような方法で操作を繰り返してください。

access_methodパラメータがdirect_pathに設定されたOracle Data Pump Export (EXPDP)ユーティリティを使用してデータをスキーマからエクスポートしようとするとき、このスキーマにデータ・リダクション・ポリシーが定義されているオブジェクトが含まれていると、次のエラー・メッセージが表示される場合があり、エクスポート操作は失敗します。

ORA-31696: unable to export/import TABLE_DATA:"schema.table" using client specified DIRECT_PATH method

この問題は、スキーマ・レベルのエクスポートを、EXP_FULL_DATABASEロールを付与されていないユーザーとして実行する場合にのみ発生します。EXP_FULL_DATABASEロールを必要とするフル・データベース・エクスポート時には発生しません。EXP_FULL_DATABASEロールにはEXEMPT REDACTION POLICYシステム権限が含まれており、これによりデータ・リダクション・ポリシーが無視されます。

潜在的な問題を見つけるには、EXPDP起動を再度試してください。ただし、access_methodパラメータをdirect_pathには設定しないでください。かわりに、automaticexternal_tableのどちらかを使用してください。潜在的な問題とは、たとえば次のような権限の問題です。

ORA-28081: Insufficient privileges - the command references a redacted object.

4.4.4 Oracle Data Redactionで保護されているオブジェクトへのデータのインポート

Oracle Data Redactionで保護されているオブジェクトへのインポート操作中に、問題が発生する可能性があるため注意してください。

Oracle Data Redactionポリシーの意図しない削除

インポート操作中に、インポートされるデータを保護するデータ・リダクション・ポリシーを誤って削除しないように注意してください。

Oracle Data Pumpエクスポート(EXPDP)ユーティリティを使用してエクスポートされたソース表にOracle Data Redactionポリシーが存在しないシナリオを考えてみます。ただし、Oracle Data Pumpインポート(IMPDP)を使用してデータをインポートする宛先表には、Oracle Data Redactionポリシーが存在します。

Data Pumpインポート操作中、インポートされるオブジェクトでのデータ・リダクション・ポリシーのステータスは、IMPDPコマンドのCONTENTオプションによって異なります。
  • IMPDPコマンドでCONTENT=ALL またはCONTENT=METADATA_ONLYオプションを使用する場合、宛先表のデータ・リダクション・ポリシーは削除されます。データ・リダクション・ポリシーを再作成する必要があります。

  • IMPDPコマンドでCONTENT=DATA_ONLYを使用する場合、宛先表のデータ・リダクション・ポリシーは削除されません。

インポートされないデータ・リダクション・ポリシー

インポート操作中に、ORA-28069: A Data Redaction Policy Already Exists On This Objectエラーが発生する可能性があります。

Oracle Data Pump Export (EXPDP)ユーティリティを使用してエクスポートされたソース表にOracle Data Redactionポリシーが存在するシナリオを考えてみます。Oracle Data Pump (IMPDP)を使用してデータをインポートする宛先表にも、Oracle Data Redactionポリシーが存在します。

データ・ポンプ・インポート操作中に、ORA-28069エラーが発生する可能性があります。このエラーを回避するには、CONTENT=DATA_ONLYパラメータを使用してデータのみをインポートする必要があります。または、ターゲット・オブジェクトのリダクション・ポリシーを削除してから、すべてのデータをインポートできます。