Oracle Flashback Technology

Oracle Flashback Technologyは、Oracle AI Database機能のグループで、データベース、データベース・オブジェクト、トランザクションまたは行の過去の状態を表示し、データベース、データベース・オブジェクト、トランザクションまたは行を、ポイント・イン・タイム・メディア・リカバリを使用せずに前の状態に戻すことができます。

フラッシュバック機能を使用すると、次のことができます。

  • 過去のある時点でのデータの様子を表示する問合せの実行

  • データベースに対する変更の詳細履歴を示したメタデータを戻す問合せを実行します。

  • 表または行を前の時点にリカバリします。

  • トランザクション・データの変更を自動的に追跡およびアーカイブします。

  • データベースがオンラインである間にトランザクションおよびその依存トランザクションをロールバックします。

  • 表の削除取消

  • リストア操作なしでのポイント・イン・タイムへのデータベースのリカバリ

フラッシュバック・データベース機能以外に、ほとんどのOracle Flashback機能では、自動UNDO管理(AUM)システムにより、トランザクションに関するメタデータおよび履歴データが取得されます。フラッシュバック機能はUNDOデータに依存します。UNDOデータは、個々のトランザクションの結果のレコードです。たとえば、ユーザーが給与を1000から1100に変更するUPDATE文を実行すると、Oracle AI DatabaseによってUNDOデータに値1000が格納されます。

UNDOデータは永続的であり、データベース停止時にも失われません。フラッシュバック機能を使用すると、UNDOデータを使用して過去のデータを問い合せたり、論理的な損害をリカバリしたりすることができます。UNDOデータは、フラッシュバック機能以外でも、Oracle AI Databaseによって次の処理に使用されます:

  • アクティブなトランザクションのロールバック

  • データベースまたはプロセス・リカバリを使用した終了済トランザクションのリカバリ

  • SQL問合せに対する読取り一貫性の提供

Oracle Flashbackは、不注意または悪意でデータを変更し、不正なインストールおよびアップグレードの原因となり、アプリケーションでのロジカル・エラーを招く様々な人的エラーまたはオペレータによるエラーにより損なわれたデータに対処して巻き戻すことができます。これらの問題では、フラッシュバック・トランザクション、フラッシュバック・ドロップ、表のフラッシュバック、データベースのフラッシュバックなどの機能が使用されます。

Oracle Flashback Query

Oracle Flashback Query (フラッシュバック問合せ)では、自動UNDO管理システムを利用してトランザクションのメタデータおよび履歴データを取得することで、過去に存在したデータを表示できます。

UNDOデータは永続的で、データベースの異常や停止の際にも失われません。フラッシュバック問合せの独自の機能により、表の以前のバージョンの問合せが可能になり、誤った操作からリカバリするための強力なメカニズムも提供されます。

フラッシュバック問合せの用途は次のとおりです。

  • 失われたデータのリカバリや、誤ったコミット済の変更の取消しを行います。たとえば、削除または更新された行を、コミット後でもただちに修復できます。

  • 現行のデータと過去のある時点の対応するデータとを比較します。たとえば、前日のデータの変更を示す日次レポートを使用すると、表データの個々の行を比較したり、一連の行の共通部分または和集合を検索したりできます。

  • 特定の日の勘定残高を確認するなど、ある時点におけるトランザクション・データの状態をチェックします。

  • 特定のタイプの一時データを格納する必要をなくすことで、アプリケーションの設計を簡素化します。フラッシュバック問合せを使用すると、過去のデータをデータベースから直接取得できます。

  • レポート生成ツールなどのパッケージ・アプリケーションを過去のデータに適用します。

  • アプリケーションのセルフサービス・エラー修正を実現し、ユーザーが自分のエラーの取消しおよび修正を行えるようにします。

Oracle Flashback Version Query

Oracle Flashback Version QueryはSQLの拡張機能で、特定の表から特定の期間に存在した行のバージョンを取得するために使用できます。

Oracle Flashback Version Queryでは、指定期間に存在した行のバージョンごとに1行が返されます。どの表についても、COMMIT文が発行されるたびに行のバージョンが新たに作成されます。

Oracle Flashback Version Queryは、データベース管理者が問題の原因特定の分析を実行するために使用できる強力なツールです。さらに、アプリケーション開発者はOracle Flashback Version Queryを使用して、監査目的のカスタム・アプリケーションを作成できます。

Oracle Flashback Transaction

Oracle Flashback Transactionは、トランザクションとその依存トランザクションをバックアウトします。

DBMS_FLASHBACK.TRANSACTION_BACKOUT()
プロシージャは、データベースがオンラインのまま、トランザクションとその依存トランザクションをロール・バックします。このリカバリ操作では、UNDOデータを使用して補正トランザクションを作成および実行します。このトランザクションによって影響のあったデータが元の状態に戻ります。次の問合せができます
DBA_FLASHBACK_TRANSACTION_STATE
ビュー: トランザクションが依存性ルールを使用してバックアウトされたか、次のいずれかを実行することによって強制的に破棄されたかを確認できます。
  • 競合していない行のバックアウト

  • UNDO SQLの適用

Oracle Flashback Transactionでは、特定のトランザクション、またはトランザクションのセットとその依存トランザクションを迅速にバックアウトすることにより、論理リカバリ時の可用性が向上します。データベースがオンラインのまま、1つのコマンドを使用してトランザクションをバックアウトします。

Oracle Flashback Transaction Query

Oracle Flashback Transaction Queryは、データベースに加えられたすべての変更をトランザクション・レベルで表示するためのメカニズムを提供します。

Oracle Flashback Version Queryと併用した場合、人的エラーまたはアプリケーションのエラーからリカバリする高速で効率的な手段となります。Oracle Flashback Transaction Queryでは、行を変更したデータベース・ユーザーが返されるため、データベースの問題のオンライン診断を実行する能力が強化されます。また、トランザクションの分析および監査も実行されます。

Oracle Flashback Table

Oracle Flashback Tableを使用すると、過去のある時点の状態に表をリカバリできます。

人的エラーまたはアプリケーションのエラーによって変更された1つの表または一連の表をリカバリするための高速なオンライン・ソリューションを提供します。ほとんどの場合、Oracle Flashback Tableを使用することで、管理者がより複雑なポイント・イン・タイム・リカバリ操作を実行する必要性は軽減されます。元の表のデータは、Oracle Flashback Tableを使用すると表を元の状態に戻せるため失われません。

Oracle Flashback Drop

削除された表、索引、制約またはトリガーをリカバリする簡単な方法はありませんが、Oracle Flashback Dropでは、オブジェクトを削除する際の安全策が提供されます。

表を削除すると、その表は自動的にごみ箱に入ります。ごみ箱は、すべての削除済オブジェクトが入っている仮想コンテナです。削除した表のデータは、引き続き問い合せることができます。

リストア・ポイント

Oracle Flashbackのリカバリ操作をデータベースで実行するとき、後でデータをフラッシュバックできるポイント(システム変更番号(SCN)またはタイムスタンプで識別)を決定する必要があります。

Oracle Flashbackのリストア・ポイントとは、フラッシュバック・データベース、フラッシュバック表およびOracle Recovery Manager(RMAN)操作で使用されるSCNまたはトランザクション時間に置き換えるためにユーザーが定義できるラベルです。さらに、データベースは、前回のデータベース・リカバリによりフラッシュバックでき、次を使用してオープンできます。
OPEN RESETLOGS
コマンド(保証されたリストア・ポイントを使用)。保証されたリストア・ポイントを使用して、データベースの巻戻しに必要なUNDOが保存されるようにすることで、データベースのバッチ・ジョブ、アップグレードまたはパッチなどの主なデータベース変更を素早く元に戻すことができます。

リストア・ポイント機能を使用すると、次の利点があります。

  • 一貫性のある状態、つまり失敗した計画操作(バッチ・ジョブ、Oracleソフトウェア・アップグレードまたはアプリケーション・アップグレードの失敗など)より前の適切なポイントに素早くリストアすることが可能

  • スナップショット・スタンバイ・データベースをプライマリ・データベースと再同期させる機能

  • テスト・データベースまたはクローン化されたデータベースを元の状態に戻す迅速なメカニズム

Oracle Flashback Database

Oracle Flashback Databaseは高速巻戻しボタンのようなもので、データベースを過去の時点にすばやく巻き戻します。バックアップやアーカイブ・ログを使用したリストアやロール・フォワードに時間をかける必要がありません。

データベースのサイズが大きくなるほど、Oracle Flashback Databaseを使用する高速なポイント・イン・タイム・リカバリの利点も大きくなります。

Oracle Flashback Databaseを有効にすると、次の利点があります。

  • ポイント・イン・タイム・リカバリで論理破損(管理エラーを原因とする破損など)を高速に修復。

  • Oracleリストア・ポイントと組み合わせた反復テストに便利。リストア・ポイントの設定、データベースの変更の実装、影響を評価するためのワークロードのテスト実行が可能。Oracle Flashback Databaseを使用して、変更を破棄して元の起点に戻り、別の変更を行ってから、同じワークロードでもう一度テスト実行することで、正当な基盤に基づいて異なる構成変更の影響を比較することができます。

  • Data GuardはOracle Flashback Databaseを使用して、障害の発生したプライマリ・データベースを、(フェイルオーバー後に)新しいスタンバイとしてすばやく再インスタンス化します(障害の発生したプライマリをバックアップからリストアする必要はありません)。

  • Flashback DatabaseはCDBレベルまたはPDBレベルで動作します。

プラガブル・データベースのフラッシュバック

PDBを前のSCNまで巻き戻しできます。SQLまたはRecovery Managerから使用可能なFLASHBACK PLUGGABLE DATABASEコマンドは、非CDBでのFLASHBACK DATABASEに類似しています。

フラッシュバックPDBはデータ破損、広範囲のユーザー・エラー、およびREDO破損から個々のPDBを保護します。操作ではCDB内の他のPDBのデータは巻き戻しされません。

次を使用して
CREATE RESTORE POINT ... FOR PLUGGABLE
        DATABASE
PDBのリストア・ポイントを作成できます。これは、指定されたPDB内でのみ使用できます。CDBリストア・ポイントと同様に、PDBリストア・ポイントも通常または保証付きのいずれかです。保証付きリストア・ポイントは、制御ファイルからエージ・アウトされず、明示的に削除する必要があります。ルートに接続していて、次を指定しない場合、
FOR PLUGGABLE
        DATABASE
句。すべてのPDBで使用できるCDBリストア・ポイントが作成されます。

特殊なPDBリストア・ポイントのタイプはクリーン・リストア・ポイントで、これはPDBが閉じている場合のみ作成できます。共有UNDOを使用するPDBの場合、クリーン・リストア・ポイントまでのPDBの巻き戻しは他の操作よりも高速に行われます。これは、バックアップのリストアまたは一時データベース・インスタンスの作成が不要なためです。

フラッシュバック・ログまたはフィジカル・スタンバイ・データベースを使用したブロック・メディア・リカバリ

自動的な破損ブロック修復の試行後、ブロック・メディア・リカバリ機能で、フラッシュバック・ログからデータ・ブロックの最新コピーを必要に応じて取得して、リカバリ時間を短縮できます。

自動ブロック修復を使用すると、検出されたプライマリ・データベースの破損ブロックをフィジカル・スタンバイ・データベースの良好なブロックを使用してただちに自動修復できます。

その上、インスタンスのリカバリで発生した破損ブロックによってインスタンスのリカバリが失敗することはありません。そのブロックは自動的に破損とマークされ、次のRMAN破損リストに追加されます
V$DATABASE_BLOCK_CORRUPTION
表。その後、RMANの次を発行します
RECOVER BLOCK
コマンド。これにより、関連するブロックを修正できます。また、RMANの
RECOVER BLOCK
コマンドは、フィジカル・スタンバイ・データベース(使用できる場合)からブロックをリストアします。

フラッシュバック・データ・アーカイブ

フラッシュバック・データ・アーカイブは表領域に格納され、レコードの存続期間中に表のすべてのレコードに対して行われたトランザクションの変更が含まれます。

アーカイブされたデータは、UNDO表領域で提供される保存期間よりも長く保存でき、分析および修復のために非常に古いデータを取得するために使用されます。