フラッシュバック・タイム・トラベルによる表の変更のトラッキング

フラッシュバック・タイム・トラベルを使用して、ポイントインタイム・メディア・リカバリを使用せずに、データベース・オブジェクトの過去の状態を表示するか、データベース・オブジェクトを前の状態に戻します。

Flashback Time Travelについて

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

フラッシュバック・タイム・トラベルは、以前のOracle Databaseバージョンではフラッシュバック・データ・アーカイブと呼ばれていました。Flashback Time Travel APIおよびFLASHBACK ARCHIVE権限などの一部のFlashback Time Travel用語は、Flashback Data 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. 表の作成時にフラッシュバック・タイム・移動を有効にするには:
    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プロシージャを参照してください。

フラッシュバック・タイム・トラベルの履歴データのパージ

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

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

たとえば、すべてのフラッシュバック・タイム・トラベルの履歴データをパージするには:
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プロシージャを参照してください。

フラッシュバック・タイム・旅行情報の表示

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

フラッシュバック・タイム・トラベル・ファイルに関する情報は、静的データ・ディクショナリ・ビューで表示できます。

表示 説明
*_FLASHBACK_ARCHIVE フラッシュバック・タイム・トラベル・ファイルに関する情報を表示します。
*_FLASHBACK_ARCHIVE_TS フラッシュバック・タイム・トラベル・ファイルの表領域を表示します。
*_FLASHBACK_ARCHIVE_TABLES フラッシュバック・タイム・トラベルが有効になっている表に関する情報を表示します。

フラッシュバック・タイム・トラベルに関するノート

Autonomous Databaseでフラッシュバック・タイム・トラベルを使用する場合の注意事項と制限事項を示します。

フラッシュバック・タイム・トラベルには次の制限があります:

  • フラッシュバック・時間移動は、LONGデータ型またはネストした表の列を含む表に対しては有効にできません。

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

  • フラッシュバック・タイム・トラベルは、パーティションまたはサブパーティションの移動、分割、マージまたは結合、表の移動、またはLONG列からLOB列への変換を行うDDL文をサポートしていません。

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

    フラッシュバック・タイム・トラベルが有効になっている表に対する制約(外部キー制約を含む)の削除または無効化はサポートされています。

  • 表でフラッシュバック・タイム・トラベルを有効にした後、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が発生します。

  • 表でフラッシュバック・タイム・トラベルを有効にするには、次のフラッシュバック・タイム・トラベル予約語を列名として使用できません:
    • STARTSCN
    • ENDSCN
    • RID
    • XID
    • OP
    • OPERATION