FLASHBACK DATABASE
目的
FLASHBACK
DATABASE
文を使用すると、データベースを過去の時点またはシステム変更番号(SCN)まで戻すことができます。この文を使用すると、データベースの不完全リカバリと同じ操作をより高速に実行できます。
FLASHBACK
DATABASE
操作の後、フラッシュバックされたデータベースに書込みアクセスするためには、ALTER
DATABASE
OPEN
RESETLOGS
文によってそのデータベースを再オープンする必要があります。
関連項目:
FLASHBACK
DATABASE
の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
前提条件
SYSDBA
、SYSBACKUP
、またはSYSDG
システム権限が必要です。
マルチテナント・コンテナ・データベース(CDB)に接続しているときには、次の条件が適用されます。
-
CDBをフラッシュバックするには、ルートに接続する必要があります。また、共通に付与されている
SYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要です。 -
PDBをフラッシュバックするには、ルートに接続されている必要があり、共通に付与されている
SYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要であるか、またはフラッシュバックするPDBに接続されている必要があり、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限)が必要です。
高速リカバリ領域をデータベースに設定しておく必要があります。また、データベースを保証付きリストア・ポイントにフラッシュバックするのでなければ、ALTER
DATABASE
FLASHBACK
ON
文を使用して、データベースをFLASHBACK
モードにしておく必要があります。データベースは、マウントされているがオープンされていない状態であることが必要です。
また、次のことに注意してください。
-
データベースは、
ARCHIVELOG
モードで実行されている必要があります。 -
データベースは、現行の制御ファイルとともにマウントされている必要がありますが、オープンされている必要はありません。制御ファイルは、バックアップおよび再作成することはできません。データベース制御ファイルがバックアップからリストアされるか、または再作成されると、既存のすべてのフラッシュバック・ログ情報は廃棄されます。
-
データベースには、SQL文
ALTER
TABLESPACE
...FLASHBACK
OFF
を使用して、フラッシュバック機能が使用禁止にされたオンライン表領域は含めないでください。
関連項目:
-
データベースを
FLASHBACK
モードにする方法については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』および「ALTER
DATABASE
」の「flashback_mode_clause」を参照してください。 -
リストア・ポイントおよび保証付きリストア・ポイントの詳細は、「CREATE RESTORE POINT」を参照してください。
構文
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
POINT
のCLEAN句を参照してください。
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;