69 DBMS_FLASHBACK_ARCHIVE
DBMS_FLASHBACK_ARCHIVE
パッケージには、様々なフラッシュバック・タスクを実行するためのプロシージャが含まれています。
これには次のものがあります。
-
フラッシュバック・アーカイブが有効な表と、その基礎となるフラッシュバック・データ・アーカイブ(FDA)との関連付けの解除および再関連付け
-
アプリケーション表の改ざん防止。
-
ユーザー履歴のインポート
注意:
ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。
-
セッション・レベルでの有効な時間のサポートの有効化および無効化
この章のトピックは、次のとおりです:
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の定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
一時履歴表を削除しない。 |
|
|
|
トランザクションをコミットしない。 |
|
|
|
履歴表のデータを削除しない。 |
69.4 DBMS_FLASHBACK_ARCHIVEサブプログラムの要約
この表は、DBMS_FLASHBACK_ARCHIVE
サブプログラムを示し、簡単に説明しています。
表69-2 DBMS_FLASHBACK_ARCHIVEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。 |
|
スキーマ内の適切な定義を使用して |
|
アプリケーション名を取得し、その中の表をセキュリティ表としてマークします。 |
|
セッション・レベルの有効な時間のフラッシュバックを無効にします。 |
|
指定した表とフラッシュバック・データ・アーカイブの関連付けを解除します。 |
|
アプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。 |
|
アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。 |
|
セッション・レベルの有効な時間のフラッシュバックを有効にします。 |
|
時間マッピングを過去の時間に拡張します。 |
|
SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。 |
|
指定したスキーマ内の |
|
アプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。 |
|
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
|
指定されたアプリケーションにセキュリティ表として追加される表の名前。 |
|
目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・データ・アーカイブが有効な表のスキーマ。 |
|
フラッシュバック・データ・アーカイブが有効な表の名前。 |
69.4.3 DISABLE_APPLICATIONプロシージャ
このプロシージャは、アプリケーション名を取得し、そのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを無効にします。
構文
DBMS_FLASHBACK_ARCHIVE.DISABLE_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表69-5 DISABLE_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・データ・アーカイブが無効にされるセキュリティ表のアプリケーションの名前。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・データ・アーカイブが有効な元表のスキーマ。 |
|
フラッシュバック・データ・アーカイブが有効な元表の名前。 |
例外
表69-7 DISASSOCIATE_FBAプロシージャの例外
パラメータ | 説明 |
---|---|
|
ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。 |
|
関連付けを解除するためのロックを表で取得できません。 |
69.4.6 DROP_APPLICATIONプロシージャ
このプロシージャはアプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。このプロシージャの一部として、セキュリティが有効なすべての表のフラッシュバック・データ・アーカイブが無効にされて、すべての履歴データが失われます。SYSTEM
というグループは削除できません。
構文
DBMS_FLASHBACK_ARCHIVE.DROP_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表69-8 DROP_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
69.4.7 ENABLE_APPLICATIONプロシージャ
このプロシージャは、アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。アプリケーションを有効にすると、FDAが有効な表へのすべての変更が追跡されます。
構文
DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表69-9 ENABLE_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アプリケーションの名前。このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプション:
|
|
レベルが |
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ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
トランザクション識別子は、バージョン問合せによって取得されたトランザクションへの不透明なハンドルです。 |
|
ネームスペース |
|
未定義の場合、サブプログラムは |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・データ・アーカイブが有効な表のスキーマ。 |
|
フラッシュバック・データ・アーカイブが有効な表の名前。 |
|
履歴データのインポート元になる、オプションの一時履歴表。 |
|
一時履歴表の削除、変更のコミット、または消去用に指定する定数( |
使用上のノート
データベース・ファンクション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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・データ・アーカイブが有効な元表のスキーマ。 |
|
フラッシュバック・データ・アーカイブが有効な元表の名前。 |
例外
表69-15 REASSOCIATE_FBAプロシージャの例外
パラメータ | 説明 |
---|---|
|
ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。 |
|
表定義の検証に失敗しました。 |
使用上のノート
-
元表と履歴表の定義が同一でない場合、プロシージャはエラーを通知します。たとえば、列が追加された場合や表が分割された場合は、元表と履歴表のスキーマが同じであることが必要です。
-
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
登録するアプリケーションの名前。アプリケーション |
|
指定されたアプリケーションのセキュリティ表の履歴データが格納されているフラッシュバック・データ・アーカイブの名前。フラッシュバック・データ・アーカイブが指定されていない場合、デフォルトのフラッシュバック・データ・アーカイブが使用されます。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表のリストから表が削除されるアプリケーションの名前。 |
|
指定したアプリケーションのセキュリティ表ではなくなったことがマークされる表の名前。 |
|
目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。 |