74 DBMS_FLASHBACK_ARCHIVE

DBMS_FLASHBACK_ARCHIVEパッケージには、様々なフラッシュバック・アーカイブ・タスクを実行するためのプロシージャが含まれています。

これには次のものがあります。

  • フラッシュバック・アーカイブが有効な表と、その基礎となるフラッシュバック・タイム・トラベルとの関連付けの解除および再関連付け

  • アプリケーション表の改ざん防止。

  • ユーザー履歴のインポート

    注意:

    ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。

  • セッション・レベルでの有効な時間のサポートの有効化および無効化

参照:

フラッシュバック・タイム・トラベルの使用の詳細は、『Oracle Database開発ガイド』を参照してください

この章のトピックは、次のとおりです:

74.1 DBMS_FLASHBACK_ARCHIVEの概要

フラッシュバック・タイム・トラベルは、ユーザーのために作成およびメンテナンスする内部履歴表を厳重に保護します。

注意:

DBMS_FLASHBACK_ARCHIVEパッケージでは、データベース間の移行はサポートされていません。フラッシュバック・タイム・トラベルの履歴は同じデータベース内でのみ移動でき、外部には移動できません。このパッケージでは、フラッシュバック・タイム・トラベルの表データを移動できません。これにより、顧客履歴のみをインポートできます。フラッシュバック・タイム・トラベルの履歴はインポートできません。

読取り専用のセマンティクスによって、DBAを含むユーザーは、フラッシュバック・タイム・トラベルの内部履歴表の更新、削除および挿入が禁止されています。ユーザーがこれらの表に関するDDL文を発行することも禁止されています。この厳密なセキュリティの施行により、規制遵守やコンプライアンスが求められる環境でアプリケーションの要件に適合します。フラッシュバック・タイム・トラベルは、表定義の変更やデータの移動を行う文を含む、一般的なDDL文のほとんどをサポートしています。ただし、一部のDDL文は、フラッシュバック・アーカイブが有効な表でサポートされていません。アプリケーション・ソフトウェアのアップグレードにおいては、ほとんどのアプリケーション・スキーマが変更されるため、追跡された表でのDDL操作の実行は不可欠です。

フラッシュバック・タイム・トラベルでサポートされていないDDL文の使用を必要とするアプリケーション・アップグレードやその他の表メンテナンス・タスク中にスキーマの進化をサポートするために、DBMS_FLASHBACK_ARCHIVEパッケージには、簡単に使用できる、次のPL/SQLプロシージャのセットが用意されています。

  • フラッシュバック・アーカイブが有効な元表と基礎となるフラッシュバック・タイム・トラベルとの関連付けを解除する

  • 一時的に関連付けを解除した元表を基礎となるフラッシュバック・タイム・トラベルに再関連付けする

ユーザーがフラッシュバック・アーカイブから元表の関連付けを解除すると、元表またはフラッシュバック・アーカイブ内の履歴表に任意のDDL文を発行できます。スキーマの変更が完了すると、ユーザーは元表とフラッシュバック・アーカイブを再関連付けできます。これにより、フラッシュバック・タイム・トラベルの保護が機能して、自動追跡とアーカイブを再開します。

74.2 DBMS_FLASHBACK_ARCHIVEのセキュリティ・モデル

ユーザー生成履歴のインポート、コンテキスト・レベルの設定および表の改ざん防止を実行するために、ユーザーはFLASHBACK_ARCHIVE_ADMINISTER権限を必要とします。表の関連付けが解除されると、ユーザーに必要な権限があれば、DDLおよびDML文を表に対して実行できます。セッション・レベルでの有効な時間の一時フラッシュバックを有効および無効にする場合、それ以外の権限は必要ありません。

74.3 DBMS_FLASHBACK_ARCHIVEの定数

DBMS_FLASHBACK_ARCHIVEパッケージでは、次の表に示す定数が使用されます。

表74-1 DBMS_FLASHBACK_ARCHIVEの定数

定数 タイプ 説明

NODROP

BINARY_INTEGER

1

一時履歴表を削除しない。

NOCOMMIT

BINARY_INTEGER

2

トランザクションをコミットしない。

NODELETE

BINARY_INTEGER

4

履歴表のデータを削除しない。

74.4 DBMS_FLASHBACK_ARCHIVEサブプログラムの要約

この表は、DBMS_FLASHBACK_ARCHIVEサブプログラムを示し、簡単に説明しています。

表74-2 DBMS_FLASHBACK_ARCHIVEパッケージのサブプログラム

サブプログラム 説明

ADD_TABLE_TO_APPLICATIONプロシージャ

アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。

CREATE_TEMP_HISTORY_TABLEプロシージャ

スキーマ内の適切な定義を使用してTEMP_HISTORYという表を作成します。

DISABLE_APPLICATIONプロシージャ

アプリケーション名を取得し、その中の表をセキュリティ表としてマークします。

DISABLE_ASOF_VALID_TIMEプロシージャ

セッション・レベルの有効な時間のフラッシュバックを無効にします。

DISASSOCIATE_FBAプロシージャ

指定した表とフラッシュバック・タイム・トラベルの関連付けを解除します

DROP_APPLICATIONプロシージャ

アプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。

ENABLE_APPLICATIONプロシージャ

アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。

ENABLE_AT_VALID_TIMEプロシージャ

セッション・レベルの有効な時間のフラッシュバックを有効にします。

EXTEND_MAPPINGSプロシージャ

時間マッピングを過去の時間に拡張します。

GET_SYS_CONTEXTファンクション

SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。

IMPORT_HISTORYプロシージャ

指定したスキーマ内のTEMP_HISTORYという表から履歴をインポートします。

LOCK_DOWN_APPLICATIONプロシージャ

アプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。SYSTEMというグループはロックできません。

PURGE_CONTEXTプロシージャ

SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。

REASSOCIATE_FBAプロシージャ

指定した表とフラッシュバック・タイム・トラベルを再関連付けします

REGISTER_APPLICATIONプロシージャ

アプリケーション名(およびオプションで時間移動)を取得し、データベース強化のためにアプリケーションを登録します。

REMOVE_TABLE_FROM_APPLICATIONプロシージャ

アプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。

SET_CONTEXT_LEVELプロシージャ

ユーザー・コンテキストがどの程度保存されるかを定義します。

74.4.1 ADD_TABLE_TO_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。アプリケーションでフラッシュバック・タイム・トラベルが有効になっている場合は、この表もフラッシュバック・タイム・トラベルが有効になります。

構文

DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION (
   application_name           IN   VARCHAR2,
   table_name                 IN   VARCHAR2,
   schema_name                IN   VARCHAR2 := NULL);

パラメータ

表74-3 ADD_TABLE_TO_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

table_name

指定されたアプリケーションにセキュリティ表として追加される表の名前。

schema_name

目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。

74.4.2 CREATE_TEMP_HISTORY_TABLEプロシージャ

このプロシージャは、スキーマ内の適切な定義を使用してTEMP_HISTORYという表を作成します。

構文

DBMS_FLASHBACK_ARCHIVE.CREATE_TEMP_HISTORY_TABLE (
   owner_name1      IN   VARCHAR2, 
   table_name1      IN   VARCHAR2);

パラメータ

表74-4 CREATE_TEMP_HISTORY_TABLEプロシージャのパラメータ

パラメータ 説明

owner_name1

フラッシュバック時間移動が有効な表のスキーマ

table_name1

フラッシュバック時間移動が有効な表の名前

74.4.3 DISABLE_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、そのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを無効にします。

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

表74-5 DISABLE_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

フラッシュバック・タイム・トラベルが無効にされるセキュリティ表のアプリケーションの名前。

74.4.4 DISABLE_ASOF_VALID_TIMEプロシージャ

このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを無効にします。

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_ASOF_VALID_TIME;

74.4.5 DISASSOCIATE_FBAプロシージャ

このプロシージャは、指定した表とフラッシュバック・タイム・トラベルの関連付けを解除します。

構文

DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA (
   owner_name     IN    VARCHAR2, 
   table_name     IN    VARCHAR2);

パラメータ

表74-6 DISASSOCIATE_FBAプロシージャのパラメータ

パラメータ 説明

owner_name

フラッシュバック・タイム・トラベルが有効な元表のスキーマ

table_name

フラッシュバック・タイム・トラベルが有効な元表の名前

例外

表74-7 DISASSOCIATE_FBAプロシージャの例外

例外 説明

ORA-55602

ユーザー表がフラッシュバック・タイム・トラベルに対して有効ではありません

ORA-55634

関連付けを解除するためのロックを表で取得できません。

74.4.6 DROP_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。このプロシージャの一部として、セキュリティが有効なすべての表のフラッシュバック・タイム・トラベルが無効にされるため、すべての履歴データが失われます。SYSTEMというグループは削除できません。

構文

DBMS_FLASHBACK_ARCHIVE.DROP_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

表74-8 DROP_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

74.4.7 ENABLE_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。アプリケーションを有効にすると、フラッシュバック・タイム・トラベルが有効な表に対するすべての変更が追跡されます。

構文

DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

表74-9 ENABLE_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

アプリケーションの名前。このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。

74.4.8 ENABLE_AT_VALID_TIMEプロシージャ

このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを有効にします。

構文

DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME (
   level          IN    VARCHAR2, 
   query_time     IN    TIMESTAMP DEFAULT SYSTIMESTAMP);

パラメータ

表74-10 ENABLE_AT_VALID_TIMEプロシージャのパラメータ

パラメータ 説明

level

オプション:

  • All - 一時データの可視性を表全体に設定します。これは一時表のデフォルトの可視性です。

  • CURRENT - 一時データの可視性を、セッション・レベルで有効期間内にある現在有効なデータに対して設定します。

  • ASOF - 一時データの可視性を、タイムスタンプで定義された特定の時間に有効なデータに対して設定します。

query_time

レベルがASOFのときにのみ使用されます。このquery_timeの時点で有効なデータのみ表示されます。

74.4.9 EXTEND_MAPPINGSプロシージャ

このプロシージャは、時間マッピングを過去の時間に拡張します。

構文

DBMS_FLASHBACK_ARCHIVE.EXTEND_MAPPINGS;

74.4.10 GET_SYS_CONTEXTファンクション

このファンクションは、SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。

構文

DBMS_FLASHBACK_ARCHIVE.GET_SYS_CONTEXT (
   xid            IN   RAW, 
   namespace      IN   VARCHAR2, 
   parameter      IN   VARCHAR2)
 RETURN VARCHAR2;

パラメータ

表74-11 GET_SYS_CONTEXTファンクションのパラメータ

パラメータ 説明

xid

トランザクション識別子は、バージョン問合せによって取得されたトランザクションへの不透明なハンドルです。

namespace

ネームスペース

parameter

未定義の場合、サブプログラムはNULLを戻します。

74.4.11 IMPORT_HISTORYプロシージャ

このプロシージャは、CREATE_TEMP_HISTORY_TABLEプロシージャが起動されて、TEMP_HISTORY表にユーザーが生成した履歴データが移入された後にコールされます

注意:

ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。

DBMS_FLASHBACK_ARCHIVEパッケージでは、データベース間の移行はサポートされていません。フラッシュバック・タイム・トラベルの履歴は同じデータベース内でのみ移動でき、外部には移動できません。このパッケージでは、フラッシュバック・タイム・トラベルの表データを移動できません。これにより、顧客履歴のみをインポートできます。フラッシュバック・タイム・トラベルの履歴はインポートできません。

構文

DBMS_FLASHBACK_ARCHIVE.IMPORT_HISTORY (
   owner_name1         IN   VARCHAR2, 
   table_name1         IN   VARCHAR2 
   temp_history_name   IN   VARCHAR2 DEFAULT 'TEMP_HISTORY',
   options             IN   BINARY_INTEGER DEFAULT 0);

パラメータ

表74-12 IMPORT_HISTORYプロシージャのパラメータ

パラメータ 説明

owner_name1

フラッシュバック時間移動が有効な表のスキーマ

table_name1

フラッシュバック時間移動が有効な表の名前

temp_history_name

履歴データのインポート元になる、オプションの一時履歴表。

options

一時履歴表の削除、変更のコミット、または消去用に指定する定数(NODROPNOCOMMITまたはNODELETE)のいずれか(または組合せ)。

使用上のノート

データベース・ファンクションTIMESTAMP_TO_SCNは、一時履歴表にデータを移入するときに、時間をSCNに変換するために使用できます。

74.4.12 LOCK_DOWN_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。SYSTEMというグループはロックできません。

構文

DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

表74-13 LOCK_DOWN_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

74.4.13 PURGE_CONTEXTプロシージャ

このプロシージャは、SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。

構文

DBMS_FLASHBACK_ARCHIVE.PURGE_CONTEXT;

74.4.14 REASSOCIATE_FBAプロシージャ

このプロシージャは、指定した表とフラッシュバック・タイム・トラベルを再関連付けします。

構文

DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA (
   owner_name      VARCHAR2, 
   table_name      VARCHAR2);

パラメータ

表74-14 REASSOCIATE_FBAプロシージャのパラメータ

パラメータ 説明

owner_name

フラッシュバック・タイム・トラベルが有効な元表のスキーマ

table_name

フラッシュバック・タイム・トラベルが有効な元表の名前

例外

表74-15 REASSOCIATE_FBAプロシージャの例外

パラメータ 説明

ORA-55602

ユーザー表がフラッシュバック・タイム・トラベルに対して有効ではありません

ORA-55636

表定義の検証に失敗しました。

使用上のノート

  • 元表と履歴表の定義が同一でない場合、プロシージャはエラーを通知します。たとえば、列が追加された場合や表が分割された場合は、元表と履歴表のスキーマが同じであることが必要です。

  • フラッシュバック・タイム・トラベルの内部履歴表のスキーマには、行バージョンのメタデータ列があります。ユーザーに削除されたメタデータ列がある場合、プロシージャはエラーを通知します。

74.4.15 REGISTER_APPLICATIONプロシージャ

このプロシージャはアプリケーション名(およびオプションでフラッシュバック・アーカイブ)を取得し、データベース強化のためにアプリケーションを登録します。

データベース強化が有効な場合、そのアプリケーションのすべてのセキュリティ表で、指定されたフラッシュバック・アーカイブを使用するフラッシュバック・アーカイブの実行が有効になります。フラッシュバック・アーカイブが指定されない場合は、デフォルトのフラッシュバック・アーカイブが使用されます。

参照:

データベース強化の詳細は、『Oracle Database開発ガイド』フラッシュバック・タイム・トラベルの使用方法に関する項を参照してください。

構文

DBMS_FLASHBACK_ARCHIVE.REGISTER_APPLICATION (
   application_name           IN   VARCHAR2,
   flashback_archive_name     IN    VARCHAR2 := NULL);

パラメータ

表74-16 REGISTER_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

登録するアプリケーションの名前。アプリケーションSYSTEMはパッケージの作成時にすでに登録されており、データベース強化に必要とされる表のリストが移入されます。

flashback_archive_name

指定したアプリケーションのセキュリティ表の履歴データが格納されるフラッシュバック・アーカイブの名前。フラッシュバック・アーカイブが指定されない場合は、デフォルトのフラッシュバック・アーカイブが使用されます。

74.4.16 REMOVE_TABLE_FROM_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。

アプリケーションでフラッシュバック・アーカイブがすでに有効な場合、この表のフラッシュバック・アーカイブは無効にされます。

構文

DBMS_FLASHBACK_ARCHIVE.REMOVE_TABLE_TO_APPLICATION (
   application_name           IN   VARCHAR2,
   table_name                 IN   VARCHAR2,
   schema_name                IN   VARCHAR2 := NULL);

パラメータ

表74-17 REMOVE_TABLE_FROM_APPLICATIONプロシージャのパラメータ

パラメータ 説明

application_name

セキュリティ表のリストから表が削除されるアプリケーションの名前。

table_name

指定したアプリケーションのセキュリティ表ではなくなったことがマークされる表の名前。

schema_name

目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。

74.4.17 SET_CONTEXT_LEVELプロシージャ

このプロシージャは、ユーザー・コンテキストがどの程度保存されるかを定義します。

構文

DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL (
   level          VARCHAR2);

パラメータ

表74-18 SET_CONTEXT_LEVELプロシージャのパラメータ

パラメータ 説明

level

ユーザー・コンテキストをどの程度保存する必要があるかを指定できます。

  • ALL - SYS_CONTEXT全体。

  • TYPICAL - ユーザーID、グローバル・ユーザーIDおよびホスト名。

  • NONE - なし