フラッシュバック(Flashback Data Archive)難易度 高無料
コンプライアンス要件で、ある表の変更履歴を数年間保持し、任意の過去日付時点の値を後から参照できるようにしたい。UNDO 保持期間はせいぜい数時間で、これでは足りない。Flashback Data Archive(Flashback Time Travel)を検討している。
SQL> CREATE FLASHBACK ARCHIVE fla1 2 TABLESPACE fda_ts RETENTION 5 YEAR; SQL> ALTER TABLE hr.salary_hist FLASHBACK ARCHIVE fla1;
Flashback Data Archive(FDA)の説明として最も適切なものを選べ。(単一選択)
- A対象表の変更履歴を専用のフラッシュバックアーカイブへ長期間(
RETENTION指定の年単位)自動保持し、UNDO の保持期間を越えた過去時点の値をAS OF等で参照できる。履歴記録は透過的でアプリ改修は不要 - BFDA も内部的には UNDO を使うため、
UNDO_RETENTIONを越えた過去は参照できず、実質的に Flashback Query と保持期間は同じである - CFDA を使うには、履歴を記録するためのトリガーと履歴表をアプリ側で自作する必要がある
- DFDA は Flashback Database(DB 全体の巻き戻し)の別名で、対象表単位ではなくデータベース全体の履歴を保持する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
Flashback Data Archive(FDA / Flashback Time Travel)は、対象表の変更履歴を専用のフラッシュバックアーカイブへ長期間(年単位)自動保持する仕組みである。
UNDO の保持期間に縛られず、RETENTION で指定した期間だけ履歴を残せる。
有効化した表に対しては、SELECT ... AS OF TIMESTAMP/SCN や VERSIONS BETWEEN を使って、UNDO の限界をはるかに越えた過去時点の値・変更履歴を参照できる。
履歴の記録は透過的で、アプリ側の改修(履歴用トリガーや履歴表の自作)は不要である。
UNDO ベースの Flashback Query が「直近(UNDO 保持期間内)」しか遡れないのに対し、FDA は「監査・法令保持のような長期要件」に応える。両者は守備範囲が異なる。
- BFDA は UNDO とは別の専用アーカイブに長期保持する。まさに UNDO の限界を越えるための機能で、保持期間が Flashback Query と同じというのは誤り。
- CFDA の記録は透過的で、トリガーや履歴表の自作は不要。むしろそうした手作りを置き換えるのが FDA の狙い。
- DFDA は表(オブジェクト)単位の変更履歴保持であり、Flashback Database(DB 全体をフラッシュバックログで巻き戻す)とは全く別の機能。
ひっかけ: UNDO ベースの Flashback Query(短期)と FDA(長期・専用アーカイブ)の混同。
「FDA も UNDO を使うので保持期間は UNDO と同じ」という誤解が典型。FDA は UNDO とは別の専用領域に長期保持する。
コマンド例と想定される挙動(未実行)
CREATE FLASHBACK ARCHIVE ... RETENTION 5 YEAR; → 5年保持。 以後 hr.salary_hist は AS OF で数年前まで遡れる(履歴記録は透過的)。 ライセンス:Oracle Database 11g Release 2 (11.2.0.4) 以降、Flashback Data Archive は全エディションで利用できる。履歴表の最適化(OPTIMIZE DATA)だけは Advanced Compression オプションのライセンスが必要。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)