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

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

フラッシュバック・タイムトラベルについて

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

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

各Autonomous Databaseインスタンスには、フラッシュバック・タイム・トラベル操作をサポートする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

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

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

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

Autonomous Databaseの表のフラッシュバック時間移動を無効にする手順について説明します。

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

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

フラッシュバック時間移動の保持時間の変更

Autonomous Databaseでのフラッシュバック時間移動の保持時間を変更する手順について説明します。

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

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

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

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

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

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

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

フラッシュバック時間移動のノート

Autonomous Databaseでのフラッシュバック・タイム・トラベルの使用に関するノートと制限事項について説明します。

次のフラッシュバック・タイム・トラベル制限に注意してください。

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

  • ネストした表、一時テーブル、外部表、マテリアライズド・ビュー、AQ (Advanced Query)表または表以外のオブジェクトで、フラッシュバック・タイム・トラベルを有効にすることはできません。

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

  • フラッシュバック・タイム・トラベルが有効になっている表に対する制約(外部キー制約を含む)の追加または有効化は、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