88 DBMS_FLASHBACK_ARCHIVE
DBMS_FLASHBACK_ARCHIVE
パッケージには、様々なフラッシュバック・アーカイブ・タスクを実行するためのプロシージャが含まれています。
これには次のものがあります。
-
フラッシュバック・アーカイブが有効な表と、その基礎となるフラッシュバック・タイム・トラベルとの関連付けの解除および再関連付け
-
アプリケーション表の改ざん防止。
-
ユーザー履歴のインポート
注意:
ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。 このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。
-
セッション・レベルでの有効な時間のサポートの有効化および無効化
参照:
フラッシュバック・タイム・トラベルの使用の詳細は、『Oracle Database開発ガイド』を参照してください
この章のトピックは、次のとおりです:
88.1 DBMS_FLASHBACK_ARCHIVEの概要
フラッシュバック・タイム・トラベルは、ユーザーのために作成およびメンテナンスする内部履歴表を厳重に保護します。
注意:
DBMS_FLASHBACK_ARCHIVE
パッケージでは、データベース間の移行はサポートされていません。 フラッシュバック・タイム・トラベルの履歴は同じデータベース内でのみ移動でき、外部には移動できません。 このパッケージでは、フラッシュバック・タイム・トラベルの表データを移動できません。 これにより、顧客履歴のみをインポートできます。フラッシュバック・タイム・トラベルの履歴はインポートできません。
読取り専用のセマンティクスによって、DBAを含むユーザーは、フラッシュバック・タイム・トラベルの内部履歴表の更新、削除および挿入が禁止されています。 ユーザーがこれらの表に関するDDL文を発行することも禁止されています。 この厳密なセキュリティの施行により、規制遵守やコンプライアンスが求められる環境でアプリケーションの要件に適合します。 フラッシュバック・タイム・トラベルは、表定義の変更やデータの移動を行う文を含む、一般的なDDL文のほとんどをサポートしています。 ただし、一部のDDL文は、フラッシュバック・アーカイブが有効な表でサポートされていません。 アプリケーション・ソフトウェアのアップグレードにおいては、ほとんどのアプリケーション・スキーマが変更されるため、追跡された表でのDDL操作の実行は不可欠です。
フラッシュバック・タイム・トラベルでサポートされていないDDL文の使用を必要とするアプリケーション・アップグレードやその他の表メンテナンス・タスク中にスキーマの進化をサポートするために、DBMS_FLASHBACK_ARCHIVE
パッケージには、簡単に使用できる、次のPL/SQLプロシージャのセットが用意されています。
-
フラッシュバック・アーカイブが有効な元表と基礎となるフラッシュバック・タイム・トラベルとの関連付けを解除する
-
一時的に関連付けを解除した元表を基礎となるフラッシュバック・タイム・トラベルに再関連付けする
ユーザーがフラッシュバック・アーカイブから元表の関連付けを解除すると、元表またはフラッシュバック・アーカイブ内の履歴表に任意のDDL文を発行できます。 スキーマの変更が完了すると、ユーザーは元表とフラッシュバック・アーカイブを再関連付けできます。これにより、フラッシュバック・タイム・トラベルの保護が機能して、自動追跡とアーカイブを再開します。
88.2 DBMS_FLASHBACK_ARCHIVEのセキュリティ・モデル
ユーザー生成履歴のインポート、コンテキスト・レベルの設定および表の改ざん防止を実行するために、ユーザーはFLASHBACK_ARCHIVE_ADMINISTER
権限を必要とします。 表の関連付けが解除されると、ユーザーに必要な権限があれば、DDLおよびDML文を表に対して実行できます。 セッション・レベルでの有効な時間の一時フラッシュバックを有効および無効にする場合、それ以外の権限は必要ありません。
88.3 DBMS_FLASHBACK_ARCHIVEの定数
DBMS_FLASHBACK_ARCHIVE
パッケージでは、次の表に示す定数が使用されます。
表88-1 DBMS_FLASHBACK_ARCHIVE定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
一時履歴表を削除しない。 |
|
|
|
トランザクションをコミットしない。 |
|
|
|
履歴表のデータを削除しない。 |
88.4 DBMS_FLASHBACK_ARCHIVEサブプログラムの要約
この表は、DBMS_FLASHBACK_ARCHIVE
サブプログラムを示し、簡単に説明しています。
表88-2 DBMS_FLASHBACK_ARCHIVEパッケージ・サブプログラム
サブプログラム | 説明 |
---|---|
アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。 |
|
スキーマ内の適切な定義を使用して |
|
アプリケーション名を取得し、その中の表をセキュリティ表としてマークします。 |
|
セッション・レベルの有効な時間のフラッシュバックを無効にします。 |
|
指定した表とフラッシュバック・タイム・トラベルの関連付けを解除します |
|
アプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。 |
|
アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。 |
|
セッション・レベルの有効な時間のフラッシュバックを有効にします。 |
|
時間マッピングを過去の時間に拡張します。 |
|
GET_CURRENT_LIFESPAN_DIGESTファンクション | ユーザー表内の指定された行に現行存続期間ダイジェストを生成します。 |
SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。 |
|
指定したスキーマ内の |
|
アプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。 |
|
SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。 |
|
指定した表とフラッシュバック・タイム・トラベルを再関連付けします |
|
アプリケーション名(およびオプションで時間移動)を取得し、データベース強化のためにアプリケーションを登録します。 |
|
アプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。 |
|
ユーザー・コンテキストがどの程度保存されるかを定義します。 |
|
VERIFY_BLOCKCHAIN_LIFESPANプロシージャ | ユーザー表の行の現行、履歴またはすべての存続期間の内容を検証します |
88.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);
パラメータ
表88-3 ADD_TABLE_TO_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
|
指定されたアプリケーションにセキュリティ表として追加される表の名前。 |
|
目的の表を格納しているスキーマの名前。 スキーマ名が指定されない場合は、現行のスキーマが使用されます。 |
88.4.2 CREATE_TEMP_HISTORY_TABLEプロシージャ
このプロシージャは、スキーマ内の適切な定義を使用してTEMP_HISTORY
という表を作成します。
構文
DBMS_FLASHBACK_ARCHIVE.CREATE_TEMP_HISTORY_TABLE ( owner_name1 IN VARCHAR2, table_name1 IN VARCHAR2);
パラメータ
表88-4 CREATE_TEMP_HISTORY_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック時間移動が有効な表のスキーマ |
|
フラッシュバック時間移動が有効な表の名前 |
88.4.3 DISABLE_APPLICATIONプロシージャ
このプロシージャは、アプリケーション名を取得し、そのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを無効にします。
構文
DBMS_FLASHBACK_ARCHIVE.DISABLE_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表88-5 DISABLE_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・タイム・トラベルが無効にされるセキュリティ表のアプリケーションの名前。 |
88.4.4 DISABLE_ASOF_VALID_TIMEプロシージャ
このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを無効にします。
構文
DBMS_FLASHBACK_ARCHIVE.DISABLE_ASOF_VALID_TIME;
88.4.5 DISASSOCIATE_FBAプロシージャ
このプロシージャは、指定した表とフラッシュバック・タイム・トラベルの関連付けを解除します。
構文
DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA ( owner_name IN VARCHAR2, table_name IN VARCHAR2);
パラメータ
表88-6 DISASSOCIATE_FBAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・タイム・トラベルが有効な元表のスキーマ |
|
フラッシュバック・タイム・トラベルが有効な元表の名前 |
例外
表88-7 DISASSOCIATE_FBAプロシージャの例外
例外 | 説明 |
---|---|
|
ユーザー表がフラッシュバック・タイム・トラベルに対して有効ではありません |
|
関連付けを解除するためのロックを表で取得できません。 |
88.4.6 DROP_APPLICATIONプロシージャ
このプロシージャはアプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。 このプロシージャの一部として、セキュリティが有効なすべての表のフラッシュバック・タイム・トラベルが無効にされるため、すべての履歴データが失われます。 SYSTEM
というグループは削除できません。
構文
DBMS_FLASHBACK_ARCHIVE.DROP_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表88-8 DROP_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
88.4.7 ENABLE_APPLICATIONプロシージャ
このプロシージャは、アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。 アプリケーションを有効にすると、フラッシュバック・タイム・トラベルが有効な表に対するすべての変更が追跡されます。
構文
DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表88-9 ENABLE_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アプリケーションの名前。このアプリケーションのすべてのセキュリティ表のフラッシュバック・タイム・トラベルを有効にします。 |
88.4.8 ENABLE_AT_VALID_TIMEプロシージャ
このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを有効にします。
構文
DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME ( level IN VARCHAR2, query_time IN TIMESTAMP DEFAULT SYSTIMESTAMP);
パラメータ
表88-10 ENABLE_AT_VALID_TIMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプション:
|
|
レベルが |
88.4.9 EXTEND_MAPPINGSプロシージャ
このプロシージャは、時間マッピングを過去の時間に拡張します。
構文
DBMS_FLASHBACK_ARCHIVE.EXTEND_MAPPINGS;
88.4.10 GET_CURRENT_LIFESPAN_DIGESTファンクション
このファンクションは、ユーザー表内の指定された行に現行存続期間ダイジェストを生成します。
構文
DBMS_FLASHBACK_ARCHIVE.GET_CURRENT_LIFESPAN_DIGEST (
rid IN VARCHAR2,
start_scn IN RAW,
xid IN RAW,
op IN VARCHAR2,
objno IN NUMBER)
RETURN RAW;
パラメータ
表88-11 GET_CURRENT_LIFESPAN_DIGESTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザー表の行のROWID。 |
|
行の最新の開始SCN。 |
|
行の最新のトランザクションID。 |
op |
行に対して最後に実行された操作。 |
objno |
表のオブジェクト番号。 |
暗号化ハッシュは、すべての列値に対して列IDの昇順で生成されます。 各列値の先頭に列メタデータが付加されます。 詳細は、『データベース管理者ガイド』の付録B.1 ブロックチェーン表の列内容を参照してください。
-
ユーザー表の各行は、その行への変更をコミットするトランザクションによって作成される一連の"存続期間"を通じて遷移します。 最新の存続期間は"現行存続期間"と呼ばれ、それ以前のすべての存続期間は"履歴存続期間"と呼ばれます。
-
履歴存続期間は、フラッシュバック・アーカイブ(FBA)内部表
SYS_FBA_HIST_<objno>
に記録されます。 -
現行存続期間は、常にユーザー表に存在しています。 ただし、現行存続期間の関連メタデータは、別のFBA内部表
SYS_FBA_TCRV_<objno>
に記録されます。 -
このAPIを使用すると、ユーザー表の特定の行の現行存続期間ダイジェストを計算できます。この計算には、その行に関連付けられたFBA内部表
SYS_FBA_TCRV_<objno>
からのメタデータが使用されます。 ユーザーは、このダイジェストを記録することで、行データに破損がある場合にそれを検出できます。
88.4.11 GET_SYS_CONTEXTファンクション
このファンクションは、SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。
構文
DBMS_FLASHBACK_ARCHIVE.GET_SYS_CONTEXT ( xid IN RAW, namespace IN VARCHAR2, parameter IN VARCHAR2) RETURN VARCHAR2;
パラメータ
表88-12 GET_SYS_CONTEXTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
トランザクション識別子は、バージョン問合せによって取得されたトランザクションへの不透明なハンドルです。 |
|
ネームスペース |
|
未定義の場合、サブプログラムは |
関連トピック
88.4.12 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);
パラメータ
表88-13 IMPORT_HISTORYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック時間移動が有効な表のスキーマ |
|
フラッシュバック時間移動が有効な表の名前 |
|
履歴データのインポート元になる、オプションの一時履歴表。 |
|
一時履歴表の削除、変更のコミット、または消去用に指定する定数( |
使用上のノート
データベース・ファンクションTIMESTAMP_TO_SCN
は、一時履歴表にデータを移入するときに、時間をSCNに変換するために使用できます。
88.4.13 LOCK_DOWN_APPLICATIONプロシージャ
このプロシージャはアプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。 SYSTEM
というグループはロックできません。
構文
DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION ( application_name IN VARCHAR2);
パラメータ
表88-14 LOCK_DOWN_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表としての表が追加されたアプリケーションの名前。 |
88.4.14 PURGE_CONTEXTプロシージャ
このプロシージャは、SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。
構文
DBMS_FLASHBACK_ARCHIVE.PURGE_CONTEXT;
関連トピック
88.4.15 REASSOCIATE_FBAプロシージャ
このプロシージャは、指定した表とフラッシュバック・タイム・トラベルを再関連付けします。
構文
DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA ( owner_name VARCHAR2, table_name VARCHAR2);
パラメータ
表88-15 REASSOCIATE_FBAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
フラッシュバック・タイム・トラベルが有効な元表のスキーマ |
|
フラッシュバック・タイム・トラベルが有効な元表の名前 |
例外
表88-16 REASSOCIATE_FBAプロシージャの例外
パラメータ | 説明 |
---|---|
|
ユーザー表がフラッシュバック・タイム・トラベルに対して有効ではありません |
|
表定義の検証に失敗しました。 |
使用上のノート
-
元表と履歴表の定義が同一でない場合、プロシージャはエラーを通知します。 たとえば、列が追加された場合や表が分割された場合は、元表と履歴表のスキーマが同じであることが必要です。
-
フラッシュバック・タイム・トラベルの内部履歴表のスキーマには、行バージョンのメタデータ列があります。 ユーザーに削除されたメタデータ列がある場合、プロシージャはエラーを通知します。
88.4.16 REGISTER_APPLICATIONプロシージャ
このプロシージャはアプリケーション名(およびオプションでフラッシュバック・アーカイブ)を取得し、データベース強化のためにアプリケーションを登録します。
データベース強化が有効な場合、そのアプリケーションのすべてのセキュリティ表で、指定されたフラッシュバック・アーカイブを使用するフラッシュバック・アーカイブの実行が有効になります。 フラッシュバック・アーカイブが指定されない場合は、デフォルトのフラッシュバック・アーカイブが使用されます。
参照:
データベース強化の詳細は、『Oracle Database開発ガイド』のフラッシュバック・タイム・トラベルの使用方法に関する項を参照してください。
構文
DBMS_FLASHBACK_ARCHIVE.REGISTER_APPLICATION ( application_name IN VARCHAR2, flashback_archive_name IN VARCHAR2 := NULL);
パラメータ
表88-17 REGISTER_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
登録するアプリケーションの名前。 アプリケーション |
|
指定したアプリケーションのセキュリティ表の履歴データが格納されるフラッシュバック・アーカイブの名前。 フラッシュバック・アーカイブが指定されない場合は、デフォルトのフラッシュバック・アーカイブが使用されます。 |
88.4.17 REMOVE_TABLE_FROM_APPLICATIONプロシージャ
このプロシージャはアプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。
アプリケーションでフラッシュバック・アーカイブがすでに有効な場合、この表のフラッシュバック・アーカイブは無効にされます。
構文
DBMS_FLASHBACK_ARCHIVE.REMOVE_TABLE_TO_APPLICATION ( application_name IN VARCHAR2, table_name IN VARCHAR2, schema_name IN VARCHAR2 := NULL);
パラメータ
表88-18 REMOVE_TABLE_FROM_APPLICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セキュリティ表のリストから表が削除されるアプリケーションの名前。 |
|
指定したアプリケーションのセキュリティ表ではなくなったことがマークされる表の名前。 |
|
目的の表を格納しているスキーマの名前。 スキーマ名が指定されない場合は、現行のスキーマが使用されます。 |
88.4.18 SET_CONTEXT_LEVELプロシージャ
このプロシージャは、ユーザー・コンテキストがどの程度保存されるかを定義します。
構文
DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL ( level VARCHAR2);
パラメータ
表88-19 SET_CONTEXT_LEVELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザー・コンテキストをどの程度保存する必要があるかを指定できます。
|
88.4.19 VERIFY_BLOCKCHAIN_LIFESPANプロシージャ
このプロシージャは、ブロックチェーン・フラッシュバック・アーカイブ(FBA)を使用して保護されているユーザー表の行の現行存続期間、履歴存続期間またはすべての存続期間の内容を検証します。 検証は、行の暗号化ハッシュと、以前の履歴存続期間中に記録されたORAFBA_CURRENT_LIFESPAN_DIGEST$
列値を比較することで実施されます。
構文
PROCEDURE verify_blockchain_lifespan(
schema_name IN VARCHAR2,
table_name IN VARCHAR2,
number_of_lifespan_verified OUT NUMBER,
type_of_lifespan IN NUMBER DEFAULT LIFESPAN_ALL);
パラメータ
表88-20 VERIFY_BLOCKCHAIN_LIFESPANプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザー・スキーマ名。 |
|
ユーザー表名。 |
|
検証された存続期間行の数。 |
type_of_lifespan |
検証する存続期間のタイプ。 次に、
|