FLASHBACK DATABASE

目的

FLASHBACK DATABASE文を使用すると、データベースを過去の時点またはシステム変更番号(SCN)まで戻すことができます。この文を使用すると、データベースの不完全リカバリと同じ操作をより高速に実行できます。

FLASHBACK DATABASE操作の後、フラッシュバックされたデータベースに書込みアクセスするためには、ALTER DATABASE OPEN RESETLOGS文によってそのデータベースを再オープンする必要があります。

関連項目:

FLASHBACK DATABASEの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

前提条件

SYSDBASYSBACKUP、またはSYSDGシステム権限が必要です。

マルチテナント・コンテナ・データベース(CDB)に接続しているときには、次の条件が適用されます。

  • CDBをフラッシュバックするには、ルートに接続する必要があります。また、共通に付与されているSYSDBASYSBACKUPまたはSYSDGシステム権限が必要です。

  • PDBをフラッシュバックするには、ルートに接続されている必要があり、共通に付与されているSYSDBASYSBACKUPまたはSYSDGシステム権限が必要であるか、またはフラッシュバックするPDBに接続されている必要があり、SYSDBASYSBACKUPまたはSYSDGシステム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限)が必要です。

高速リカバリ領域をデータベースに設定しておく必要があります。また、データベースを保証付きリストア・ポイントにフラッシュバックするのでなければ、ALTER DATABASE FLASHBACK ON文を使用して、データベースをFLASHBACKモードにしておく必要があります。データベースは、マウントされているがオープンされていない状態であることが必要です。

また、次のことに注意してください。

  • データベースは、ARCHIVELOGモードで実行されている必要があります。

  • データベースは、現行の制御ファイルとともにマウントされている必要がありますが、オープンされている必要はありません。制御ファイルは、バックアップおよび再作成することはできません。データベース制御ファイルがバックアップからリストアされるか、または再作成されると、既存のすべてのフラッシュバック・ログ情報は廃棄されます。

  • データベースには、SQL文ALTER TABLESPACE ... FLASHBACK OFFを使用して、フラッシュバック機能が使用禁止にされたオンライン表領域は含めないでください。

関連項目:

構文

flashback_database::=

セマンティクス

FLASHBACK DATABASE文を発行すると、最初に、必要なすべてのアーカイブREDOログおよびオンラインREDOログが使用可能であるかどうかが確認されます。これらのログが使用可能な場合、データベース内で現在オンラインになっているすべてのデータファイルが、この文に指定したSCNまたは時刻まで戻されます。

  • データベースに保持されるフラッシュバック・データの量は、DB_FLASHBACK_RETENTION_TARGET初期化パラメータおよび高速リカバリ領域のサイズによって制御されます。V$FLASHBACK_DATABASE_LOGビューを問い合せることによって、どの時点までデータベースをフラッシュバックできるかを判断できます。

  • フラッシュバックを実行するために十分なデータがデータベースに残っていない場合、標準のリカバリ手順によってデータベースを過去のある時点の状態にリカバリできます。

  • 一連のデータファイルに十分なデータが残っていない場合、エラーが戻されます。その場合、それらのデータファイルをオフラインにし、この文を再実行してデータベースの残りのデータファイルをリカバリできます。その後、標準のリカバリ手順を使用して、オフラインにしたデータファイルをリカバリできます。

関連項目:

データファイルのリカバリの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

STANDBY

STANDBYを指定すると、スタンバイ・データベースを以前のSCNまたは時点まで戻すことができます。スタンバイ・データベースではない場合、エラーが戻されます。この句を省略すると、databaseには、プライマリ・データベースまたはスタンバイ・データベースのどちらでも指定できます。

関連項目:

スタンバイ・データベースでFLASHBACK DATABASEを使用して複数の遅延を実現する方法については、『Oracle Data Guard概要および管理』を参照してください。

PLUGGABLE

PLUGGABLEを指定してPDBをフラッシュバックします。現在のコンテナがルートまたはフラッシュバックするPDBのどちらであっても、この句を指定する必要があります。

PDBのフラッシュバックの制限事項

  • プロキシPDBをフラッシュバックすることはできません。

  • CDBが共有UNDOモードの場合は、PDBリストア・ポイントをクリーン・アップする場合にのみPDBをフラッシュバックできます。詳細は、CREATE RESTORE POINTCLEAN句を参照してください。

database

CDBをフラッシュバックする場合、必要に応じてフラッシュバックするデータベースの名前を指定できます。databaseを省略した場合は、初期化パラメータDB_NAMEの値によって特定されたデータベースがフラッシュバックされます。

PDBをフラッシュバックする際に現在のコンテナがルートである場合、databaseを使用してフラッシュバックするPDBの名前を指定します。PDBをフラッシュバックする際に現在のコンテナがそのPDBである場合、オプションでdatabaseを使用してPDB名を指定できます。

TO SCN句

システム変更番号(SCN)を指定します。

  • TO SCNでは、指定したSCNの状態にデータベースが戻されます。

  • TO BEFORE SCNでは、指定したSCNの直前のSCNの状態にデータベースが戻されます。

現行のSCNを判断するには、V$DATABASEビューのCURRENT_SCN列を問い合せます。これによって、高リスクのバッチ・ジョブを実行する前などに、SCNをスプール・ファイルに保存することもできます。

TO TIMESTAMP句

有効な日時式を指定します。

  • TO TIMESTAMPでは、指定したタイムスタンプ時点の状態にデータベースが戻されます。

  • TO BEFORE TIMESTAMPでは、指定したタイムスタンプの1秒前の状態にデータベースが戻されます。

タイムスタンプには、基準の値(SYSDATEなど)からのオフセットか、またはシステム・タイムスタンプの絶対値を指定できます。

TO RESTORE POINT句

この句を使用すると、指定したリストア・ポイントにデータベースをフラッシュバックできます。フラッシュバック・データベースが使用可能になっていない場合、このFLASHBACK DATABASE文では、この句のみを指定できます。データベースのモードがFLASHBACKでない場合、前述の「前提条件」で示したように、これは、この文で指定可能な唯一の句です。

RESETLOGS

TO BEFORE RESETLOGSを指定すると、データベースを最後のリセットログ操作(ALTER DATABASE OPEN RESETLOGS)の直前の状態にフラッシュバックできます。

関連項目:

この句の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

データベースに高速リカバリ領域が設定してあり、メディア・リカバリが使用可能になっていると想定します。次の文は、データベースのFLASHBACKモードを有効にして、データベースをオープンします。

STARTUP MOUNT 
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;

次の文は、データベースを1日以上オープンしていた場合、データベースを1日フラッシュバックします。

SHUTDOWN DATABASE
STARTUP MOUNT 
FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1;