Oracle Database 11g Release 2に関する10の重要なこと – askTom Live -
Point5: Improved Time Travel 【「タイムトラベル」の改良】

オラクル・コーポレーション
サーバー・テクノロジー部門 シニア・テクニカル・アーキテクト兼エバンジェリスト
Thomas(Tom) Kyte (トム・カイト)

5.Improved Time Travel 【「タイムトラベル」の改良】

Oracle9i Databaseでは、フラッシュバック問合せという機能が追加されました。たとえば午前11時にデータベースにログインすると、2時間前の午前9時の情報について、「SELECT * FROM 表名」という問合せが実行できるようになったのです。
この機能が追加されたあと、「どれくらい過去に遡れるのか?」「監査証跡でも使えるのか?」「5カ月前や5年前についても、検索処理ができるのか?」といった質問が寄せられました。しかし、Oracle9i DatabaseやOracle Database 10gの頃は、これらの問いへの回答は「いいえ」でした。理論的には5日程前までならば遡れたものの、5週間前や5カ月前となると無理だったのです。

それが、Oracle Database 11g R1で追加されたフラッシュバック・データ・アーカイブ(FDA)という機能によって、5日や5週間、5年など、いくらでも過去に遡ったデータを保持できるようになりました。

その仕組みを見てみましょう。

フラッシュバックデータアーカイブ(FDA)動作の仕組み
画像クリックで拡大します

データ操作言語(DML)で、データベース内のデータに対して挿入や削除などの処理をおこなうと、バッファキャッシュのデータを変更することになり、同時にUNDOの情報やロールバックのデータも生成されます。そのため、もしエラーが発生しても、変更を元に戻すことができます。
処理を確定させると、FDAがそのUNDO情報を読み取り、加えられた変更をロールバックして、処理が実行される前のログの状態を確認し、アーカイブに行を挿入して変更前の状態を表に保存します。
これにより、表のすべての変更履歴がアーカイブに残り、5カ月前の表について問い合わせることも可能になるわけです。

Oracle Database 11g R1に欠けていたのは、UNDO情報を生成しない処理の情報でした。たとえば、表の切捨て(TRUNCATE)や再編成、列の削除などはUNDO情報を生成しないため、データベース管理者(DBA)はこれらの操作を実行できませんでした。
もし、まったく表を変更しないのであれば、Oracle Database 11g R1のフラッシュバック・データ・アーカイブで十分用は足りるでしょう。しかし、ほとんどの場合はなんらかの変更が必要です。表に対してほとんどのデータ定義言語(DDL)を実行できないことが、この機能の限界の1つでした。

Oracle Database 11g R2では、これが可能になりました。

Oracle Database 11g Release Total Recall でスキーマの変更のサポート
画像クリックで拡大します

表から列を削除することもできます。
本番の表から列を削除しても、データ・アーカイブからは削除されません。列の情報はフラッシュバック・データ・アーカイブに残ります。ですから、今日か明日に列を削除してその列が本番の表からは見えなくなったとしても、1カ月前を指定してフラッシュバック問合せを行えばフラッシュバック・データ・アーカイブでは見えるのです。

フラッシュバック・データ・アーカイブでは、複雑なDDLを処理することもできます。DBA はアーカイブと本番の表のつながりを断ち切って再編成したり、表をパーティション化して再構成することも可能です。再構成後に、履歴と関連づけることもできます。もはや、表に対する操作でDBA がおこなえないものはありません。
Oracle Database 11g R2のフラッシュバック・データ・アーカイブでは、そのほかにも多くのDDLがサポートされました。
長期のアーカイブに加え、完全な機能性を手に入れたのです。

Copyright © 2010, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。

Thomas(Tom) Kyte (トム・カイト) Thomas(Tom) Kyte (トム・カイト)
2000年にAsk Tomブログ( http://asktom.oracle.com ) を開設して以来10年にわたり、全世界のオラクル技術者のありとあらゆる質問に答え、データベース技術の活用を世に広めてきた世界的に有名なエバンジェリスト。