69 DBMS_FLASHBACK_ARCHIVE

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

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

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

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

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

    注意:

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

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

参照:

詳細は、『Oracle Database開発ガイド』のフラッシュバック・データ・アーカイブ(Oracle Temporal)の使用方法に関する項を参照してください。

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

69.1 DBMS_FLASHBACK_ARCHIVEの概要

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

注意:

DBMS_FLASHBACK_ARCHIVEパッケージでは、データベース間の移行はサポートされていません。FDA履歴は同じデータベース内でのみ移動でき、外部には移動できません。このパッケージではFDA表データを移動できません。顧客履歴のみをインポートでき、FDA履歴はインポートできません。

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

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

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

  • 一時的に関連付けを解除した元表を基礎となるFDAに再関連付けする。

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

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

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

69.3 DBMS_FLASHBACK_ARCHIVEの定数

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

表69-1 DBMS_FLASHBACK_ARCHIVEの定数

定数 タイプ 説明

NODROP

BINARY_INTEGER

1

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

NOCOMMIT

BINARY_INTEGER

2

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

NODELETE

BINARY_INTEGER

4

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

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

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

表69-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プロシージャ

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

69.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);

パラメータ

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

パラメータ 説明

application_name

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

table_name

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

schema_name

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

69.4.2 CREATE_TEMP_HISTORY_TABLEプロシージャ

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

構文

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

パラメータ

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

パラメータ 説明

owner_name1

フラッシュバック・データ・アーカイブが有効な表のスキーマ。

table_name1

フラッシュバック・データ・アーカイブが有効な表の名前。

69.4.3 DISABLE_APPLICATIONプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

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

パラメータ 説明

application_name

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

69.4.4 DISABLE_ASOF_VALID_TIMEプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_ASOF_VALID_TIME;

69.4.5 DISASSOCIATE_FBAプロシージャ

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

構文

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

パラメータ

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

パラメータ 説明

owner_name

フラッシュバック・データ・アーカイブが有効な元表のスキーマ。

table_name

フラッシュバック・データ・アーカイブが有効な元表の名前。

例外

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

例外 説明

ORA-55602

ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。

ORA-55634

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

69.4.6 DROP_APPLICATIONプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.DROP_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

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

パラメータ 説明

application_name

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

69.4.7 ENABLE_APPLICATIONプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

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

パラメータ 説明

application_name

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

69.4.8 ENABLE_AT_VALID_TIMEプロシージャ

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

構文

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

パラメータ

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

パラメータ 説明

level

オプション:

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

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

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

query_time

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

69.4.9 EXTEND_MAPPINGSプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.EXTEND_MAPPINGS;

69.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;

パラメータ

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

パラメータ 説明

xid

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

namespace

ネームスペース

parameter

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

69.4.11 IMPORT_HISTORYプロシージャ

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

注意:

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

DBMS_FLASHBACK_ARCHIVEパッケージでは、データベース間の移行はサポートされていません。FDA履歴は同じデータベース内でのみ移動でき、外部には移動できません。このパッケージではFDA表データを移動できません。顧客履歴のみをインポートでき、FDA履歴はインポートできません。

構文

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);

パラメータ

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

パラメータ 説明

owner_name1

フラッシュバック・データ・アーカイブが有効な表のスキーマ。

table_name1

フラッシュバック・データ・アーカイブが有効な表の名前。

temp_history_name

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

options

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

使用上のノート

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

69.4.12 LOCK_DOWN_APPLICATIONプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION (
   application_name           IN   VARCHAR2);

パラメータ

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

パラメータ 説明

application_name

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

69.4.13 PURGE_CONTEXTプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.PURGE_CONTEXT;

69.4.14 REASSOCIATE_FBAプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA (
   owner_name      VARCHAR2, 
   table_name      VARCHAR2);

パラメータ

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

パラメータ 説明

owner_name

フラッシュバック・データ・アーカイブが有効な元表のスキーマ。

table_name

フラッシュバック・データ・アーカイブが有効な元表の名前。

例外

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

パラメータ 説明

ORA-55602

ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。

ORA-55636

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

使用上のノート

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

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

69.4.15 REGISTER_APPLICATIONプロシージャ

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

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

参照:

データベース強化の詳細は、『Oracle Database開発ガイド』「フラッシュバック・データ・アーカイブの使用方法」を参照してください。

構文

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

パラメータ

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

パラメータ 説明

application_name

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

flashback_archive_name

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

69.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);

パラメータ

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

パラメータ 説明

application_name

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

table_name

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

schema_name

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

69.4.17 SET_CONTEXT_LEVELプロシージャ

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

構文

DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL (
   level          VARCHAR2);

パラメータ

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

パラメータ 説明

level

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

  • ALL: SYS_CONTEXT全体。

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

  • NONE - なし