フラッシュバック・データベースの構成・実行

Flashback Databaseの概要

Flashbackクエリー

Flashback Query:Point-to-timeですべてのデータを照合します。
Flashback Versions Query:指定期間にトランザクションによって変更されたROWのすべてのバージョンを照合します。
Flashback Transaction Query:トランザクションによって変更されたデータを照合します。

Flashbackによってエラー修正

Database level:ある時点にデータベース全体をリカバリします。
Table level:ある時点にテーブル全体のROWをリカバリします。DROPされたテーブルと索引をリストアします。
Row level:ある時点に一連のROWをリカバリします。

Flashback Databaseの有効化要件

  • データベースをアーカイブモードで実行している必要があります。
  • フラッシュバック・ログはフラッシュ・リカバリ領域にのみ格納できるため、フラッシュ・リカバリ領域を有効にしておく必要があります。
  • Real Application Clusters データベースの場合、フラッシュ・リカバリ領域は、クラスタ・ファイル・システムまたはASM に格納する必要があります。

Flashback Databaseの有効化

1.DatabaseをMOUNT状態に起動します。

SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  419430400 bytes
Fixed Size                  2021280 bytes
Variable Size             117442656 bytes
Database Buffers          297795584 bytes
Redo Buffers                2170880 bytes
データベースがマウントされました。

2.DB_FLASHBACK_RETENTION_TARGETにフラッシュバックの期間の長さを分単位で設定します。デフォルトでは1日(1440)に設定されます。

SQL> show parameter db_flashback_retention

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_flashback_retention_target        integer                           1440

SQL> alter system set db_flashback_retention_target=2880 scope=both;

システムが変更されました。

3.データベース全体に対して、Oracle Flashback Database機能を有効にします。

SQL> alter database flashback on;

データベースが変更されました。

データベース全体のフラッシュバック・ロギングを無効にできます。
SQL> alter database flashback off;

データベースが変更されました。

デフォルトでは、すべての永続表領域用のフラッシュバック・ログが生成されます。必要に応じて、特定の表領域のフラッシュバック・ロギングを無効にして、オーバーヘッドを軽減できます。

SQL> alter tablespace users flashback off;

表領域が変更されました。

SQL> alter tablespace users flashback on;

表領域が変更されました。

4.V$DATABASEビューを問い合わせて、FLashbackモードを確認できます。

SQL> select dbid , flashback_on from v$database;

      DBID FLASHBACK_ON
---------- ------------------------------------------------------
2023001228 YES

5.V$TABLESPACEビューを問い合わせ、テーブルスペース単位のFlashback状況を調べられます。

SQL> select name,flashback_on from v$tablespace;

NAME                                                                                       FLASHBACK
------------------------------------------------------------------------------------------ ---------
SYSTEM                                                                                     YES
UNDOTBS1                                                                                   YES
SYSAUX                                                                                     YES
TEMP                                                                                       YES
USERS                                                                                      YES

Flashback Database

Flashback Databaseコマンド

使用例:

RMAN> FLASHBACK DATABASE TO SCN 46963;
RMAN> FLASHBACK DATABASE TO RESTORE POINT BEFORE_CHANGES;
RMAN> FLASHBACK DATABASE TO TIME "TO_DATE('09/20/00','MM/DD/YY')";

誤った時刻にDatabaseをフラッシュバックした場合

  • 選択した目標時点が新しすぎた場合、FLASHBACK DATABASEコマンドを再度実行してデータベースを必要な時点まで戻すことができます。
  • 選択したターゲットSCNが古すぎた場合、データベースをマウントし、RECOVER DATABASE UNTIL用してデータベースを目的のSCNまでの時点に進めることができます。
  • FLASBACK DATABASEコマンドの影響を完全に取り消す必要がある場合、UNTIL句を指定せずにRECOVER DATABASEコマンドを使用するか、またはSET UNTILコマンドを使用して、データベースの完全リカバリを実行できます。

FLASHBACK DATABASE TO BEFORE RESETLOGS

V$DATABASESETLOGS_CHANGE#がLASHBACK_DATABASE_LOGDEST_FLASHBACK_SCNより大きい場合は、Oracle Flashback Databaseを使用してOPEN RESETLOGSを前の状態に戻すことができます。

RMAN> FLASHBACK DATABASE TO BEFORE RESETLOGS;

リストア・ポイント

通常リストア・ポイント

通常のリストア・ポイントを作成すると、リストア・ポイント名が特定の時点またはSCNに割り当てられます。これは、ブックマークまたは別名のようなもので、SCNを指定する場合の省略表現として、RESTORE POINT句を認識するコマンドで使用できます。

保証付きリストア・ポイント

特定のSCNで保証付きリストア・ポイントを作成すると、フラッシュバック・ロギングがデータベースで無効な場合でも、Oracle Flashback Database操作を実行して、データベースをそのSCNの時点の状態に戻すことができるという要件が満たされます。フラッシュバック・ロギングが有効な場合、保証付きリストア・ポイントを作成することで、最も古い保証付きリストア・ポイントが作成された時点以降の任意の時点までデータベースをフラッシュバックするのに必要なフラッシュバック・ログが保持されます。

通常と保証付きリストア・ポイント作成・削除

通常リストアポイント作成・削除

SQL> CREATE RESTORE POINT before_upgrade;
SQL> DROP RESTORE POINT before_upgrade;

保証付きリストアポイント
SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;

V$RESTORE_POINT:リストアポイント照会

全てリストアポイント照会

SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
        FROM V$RESTORE_POINT;

保証付きリストアポイントのみ照会
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE
        FROM V$RESTORE_POINT
      WHERE GUARANTEE_FLASHBACK_DATABASE='YES';
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License