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

フラッシュバック時間移動を使用して、データベース・オブジェクトの過去の状態を表示したり、Point-in-Timeメディア・リカバリを使用せずにデータベース・オブジェクトを前の状態に戻します。

フラッシュバック時間トラベルについて

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

フラッシュバック時間移動は、以前のOracle AI Databaseバージョンではフラッシュバック・データ・アーカイブと呼ばれていました。フラッシュバック・タイム・トラベルAPIおよびFLASHBACK ARCHIVE権限などの一部のフラッシュバック・タイム・トラベル用語は、フラッシュバック・データ・アーカイブのネーミングを保持します。

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

表のフラッシュバック・タイム・トラベルを有効にするには、次のような制限があります。

  • flashback_archiveに対するFLASHBACK ARCHIVEオブジェクト権限が必要です。デフォルトでは、ADMINユーザーにはこの権限があります。

  • 表は次のいずれにもしないでください。

    • ネストした表

    • 一時表

    • リモート表

    • 外部表

  • 表にLONG列を含めることはできません。

  • 表にネストした列を含めることはできません。

フラッシュバック時間移動に関するその他の制限のリストは、フラッシュバック時間移動のノートを参照してください。

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

表のフラッシュバック時間移動の有効化

Autonomous AI 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

    詳細は、Autonomous AI 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;

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

表のフラッシュバック時間移動の無効化

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

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

たとえば、employee表のフラッシュバック・タイム・トラベルを無効にするには:

ALTER TABLE employee NO FLASHBACK ARCHIVE;

フラッシュバック・タイム・トラベルの保存時間の変更

Autonomous AI Databaseのフラッシュバック・タイム・トラベルの保存時間を変更する手順について説明します。

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

たとえば、保存時間を365日に設定するには:

BEGIN
  DBMS_CLOUD_ADMIN.SET_FLASHBACK_ARCHIVE_RETENTION
   (retention_days => 365);
END;
/

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

フラッシュバック時間移動の履歴データのパージ

Autonomous AI Databaseでフラッシュバック・タイム・トラベルの履歴データをパージする手順について説明します。

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 AI Databaseのフラッシュバック時間移動ファイルに関する情報を表示するためのデータ・ディクショナリ・ビューについて説明します。

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

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

フラッシュバック時間移動に関するノート

Autonomous AI Databaseでフラッシュバック・タイム・トラベルを使用するためのノートおよび制限について説明します。

次のフラッシュバック時間移動の制限に注意してください。

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

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

  • フラッシュバック・タイム・トラベルでは、LONG列をLOB列に移動、分割、マージまたは結合、表の移動、または変換するDDL文はサポートされません。

  • フラッシュバック・タイム・トラベルが有効になっている表に対する制約(外部キー制約を含む)の追加または有効化は、ORA-55610で失敗します。

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

  • 表でフラッシュバック・タイム・トラベルを有効にした後、Oracleでは、表にデータを挿入する前に最初は20秒以上待機し、表にフラッシュバック問合せを使用する前に最大5分待機することをお薦めします。

  • Autonomous AI Databaseインスタンスごとにflashback_archiveという名前のフラッシュバック・データ・アーカイブが1つあり、追加のフラッシュバック・データ・アーカイブを作成することはできません。

  • Autonomous AI 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