Flashback Time Travelによる表の変更のトラッキング

Flashback Time Travelを使用して、ポイントインタイム・メディア・リカバリを使用せずに、データベース・オブジェクトの過去の状態を表示したり、データベース・オブジェクトを前の状態に戻したりします。

Flashback Time Travelについて

フラッシュバック・タイム・トラベルを使用すると、その存続期間中、表に対するトランザクションによる変更を追跡および格納できます。フラッシュバック・タイム・トラベルは、レコード・ステージ・ポリシーと監査レポートのコンプライアンスに役立ちます。Flashback Time Travelは、デジタル・シュレッディングの実施、履歴データへのアクセス、選択的データ・リカバリなどの様々なシナリオでも使用できます。

Flashback Time Travelは、以前のOracle DatabaseバージョンではFlashback Data Archiveと呼ばれていました。Flashback Time Travel APIおよび一部のFlashback Time Travel用語(FLASHBACK ARCHIVE権限など)は、フラッシュバック・データ・アーカイブのネーミングを保持しています。

Autonomous Databaseインスタンスには、Flashback Time Travel操作をサポートするflashback_archiveという名前の1つのフラッシュバック・アーカイブがあります。flashback_archiveのデフォルトの保持時間は60日です。デフォルトの保持時間の変更の詳細は、フラッシュバック・時間移動の保持時間の変更を参照してください。

表のフラッシュバック・タイム・移動を有効化するには、次のような制限があります:

  • flashback_archiveに対するFLASHBACK ARCHIVEオブジェクト権限が必要です。デフォルトでは、ADMINユーザーにこの権限があります。
  • 表は次のいずれにもできません:
    • ネストした表
    • 一時表
    • リモート表
    • 外部表
  • 表にLONG列を含めることはできません。
  • 表にネストした列を含めることはできません。

フラッシュバック・タイム・トラベルの追加の制限事項のリストは、フラッシュバック・タイム・トラベルに関するノートを参照してください。

フラッシュバック・テクノロジの詳細は、Oracle Flashback Technologyの使用を参照してください。

表のフラッシュバック・タイム・トラベルの有効化

Autonomous Databaseで表に対してフラッシュバック・時間移動を有効にするステップについて説明します。

デフォルトでは、新規および既存の表に対してフラッシュバック・タイム・トラベルは無効になっています。

フラッシュバック・タイム・トラベルを有効にするための前提条件を次に示します:
  • ADMINユーザーとしてログインしているか、FLASHBACK ARCHIVEオブジェクト権限を持っている必要があります。

    ADMINユーザーまたはFLASHBACK ARCHIVE権限WITH GRANT OPTIONを持つユーザーは、FLASHBACK ARCHIVEオブジェクト権限を別のユーザーに付与できます。

    次に例を示します。

    GRANT FLASHBACK ARCHIVE ON FLASHBACK_ARCHIVE TO <username>
    GRANT FLASHBACK ARCHIVE ON FLASHBACK_ARCHIVE TO <username> WITH GRANT OPTION

    詳細については、Manage User Roles and Privileges on Autonomous Databaseを参照してください。

既存の表または作成する新しい表に対してフラッシュバック・タイム・トラベルを有効にできます。

  1. To enable Flashback Time Travel when you create a table:
    CREATE TABLE employee (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4)) FLASHBACK ARCHIVE;
  2. 既存の表に対してフラッシュバック・時間移動を有効にするには:
    ALTER TABLE departments FLASHBACK ARCHIVE;

表に対してフラッシュ・タイム・移動を有効にした後、フラッシュ・タイム・移動を無効にできます。詳細は、表のフラッシュバック・タイム・トラベルの無効化を参照してください。

表のFlashback Time Travelの無効化

Autonomous Databaseで表に対してフラッシュバック・タイム・トラベルを無効にする手順について説明します。

表に対してフラッシュバック・タイム・移動を有効にした後、ADMINユーザーとして、またはFLASHBACK ARCHIVEオブジェクト権限を持っている場合は、これを無効にできます。

たとえば、employee表のフラッシュバック・タイム・移動を無効にするには:
ALTER TABLE employee NO FLASHBACK ARCHIVE;

Flashback Time Travelの保持時間の変更

Autonomous DatabaseでFlashback Time Travelの保持時間を変更する手順について説明します。

ADMINユーザーとしてログインしている場合、またはDBMS_CLOUD_ADMINに対するEXECUTE権限がある場合は、フラッシュバック・タイム・トラベルの保持時間を変更できます。

たとえば、保持時間を365日に設定するには:
BEGIN
  DBMS_CLOUD_ADMIN.SET_FLASHBACK_ARCHIVE_RETENTION
   (retention_days => 365);
END;
/

この手順の詳細は、SET_FLASHBACK_ARCHIVE_RETENTIONプロシージャを参照してください。

Flashback Time Travelの履歴データのパージ

Autonomous DatabaseでFlashback Time Travelの履歴データをパージする手順について説明します。

ADMINユーザーとしてログインしている場合、またはDBMS_CLOUD_ADMINに対するEXECUTE権限がある場合は、フラッシュバック・タイム・トラベルの履歴データをパージできます。

たとえば、すべてのFlashback Time Travel履歴データをパージするには:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'ALL');
END;
/
指定したタイムスタンプより前の履歴フラッシュバック・タイム・トラベル・データをパージする例:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'TIMESTAMP', before_timestamp => '12-JUL-2023 10:24:00');
END;
/
1日より古いフラッシュバック・タイム・トラベル履歴データをパージする例:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'TIMESTAMP', before_timestamp => SYSTIMESTAMP - INTERVAL '1' DAY);
END;
/
指定したscnより前の履歴フラッシュバック・タイム・トラベル・データをパージする例:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'SCN',before_scn=> '5928826');
END;
/

この手順の詳細は、PURGE_FLASHBACK_ARCHIVEプロシージャを参照してください。

Flashback Time Travel情報の表示

Autonomous DatabaseのFlashback Time Travelファイルに関する情報を表示するためのデータ・ディクショナリ・ビューについて説明します。

Flashback Time Travelファイルに関する情報は、静的データ・ディクショナリ・ビューで表示できます。

表示 説明
*_FLASHBACK_ARCHIVE Flashback Time Travelファイルに関する情報を表示します。
*_FLASHBACK_ARCHIVE_TS Flashback Time Travelファイルの表領域を表示します。
*_FLASHBACK_ARCHIVE_TABLES Flashback Time Travelが有効になっている表に関する情報を表示します。

Flashback Time Travelに関するノート

Autonomous DatabaseでFlashback Time Travelを使用する場合の注意事項と制限事項を示します。

Flashback Time Travelの次の制限に注意してください:

  • Flashback Time Travelは、LONGデータ型またはネストした表の列を含む表に対しては有効にできません。

  • Flashback Time Travelは、ネストした表、一時表、外部表、マテリアライズド・ビュー、拡張問合せ(AQ)表、ハイブリッド・パーティション表、または表以外のオブジェクトに対しては有効にできません。

  • Flashback Time Travelは、パーティションまたはサブパーティションの移動、分割、マージまたは結合、表の移動、またはLONG列からLOB列への変換を行うDDL文をサポートしていません。

  • Flashback Time Travelが有効になっている表に対する制約(外部キー制約を含む)の追加または有効化は、ORA-55610で失敗します。

    Flashback Time Travelが有効になっている表に対する制約(外部キー制約を含む)の削除または無効化はサポートされています。

  • 表でフラッシュバック・タイム・トラベルを有効にした後、Oracleでは、最初に20秒以上待機してから表にデータを挿入し、表に対してフラッシュバック問合せを使用する前に最大5分待機することをお薦めします。
  • flashback_archiveという名前のAutonomous Databaseインスタンスごとに1つのフラッシュバック・データ・アーカイブがあり、追加のフラッシュバック・データ・アーカイブを作成することはできません。

  • Autonomous Databaseインスタンス内のフラッシュバック・データ・アーカイブflashback_archiveは削除できません。

  • フラッシュバック・データ・アーカイブの表領域を作成、変更または削除することはできません。したがって、次の文は実行できません:

    • ALTER FLASHBACK ARCHIVE flashback_archive ADD TABLESPACE;
    • ALTER FLASHBACK ARCHIVE flashback_archive MODIFY TABLESPACE;
    • ALTER FLASHBACK ARCHIVE flashback_archive REMOVE TABLESPACE;
  • 表に対してフラッシュバック・タイム・トラベルを有効にしても、自動UNDO管理(AUM)が無効な場合は、表を変更しようとするとエラーORA-55614が発生します。

  • 表でFlashback Time Travelを有効にする場合は、次のFlashback Time Travel予約語を列名として使用できません:
    • STARTSCN
    • ENDSCN
    • RID
    • XID
    • OP
    • OPERATION