Oracle Flashback は下記の三つ機能で構成されている
Flashback Database
概要 データベースのロールバックセグメントの履歴をFlashback Areaに格納することで、過去の時点にデータベース全体を戻す機能である。
文法
【 FLASHBACK DATABASE 】データベースを以前の状態にリストアする FLASHBACK [ STANDBY ] DATABASE [ データベース名 ] → → TO [ BEFORE ] { SCN | TIMESTAMP } 式 [ { ENABLE | DISABLE } TRIGGERS ] ;
詳細説明
サンプル
See Also
Flashback Query
概要 UNDOテーブルスペースのRETENTION範囲内に(領域オーバーで消えることがあるが)、テーブルの履歴が確認できる。
文法
Flashback Version Query
select column_name from table_name [VERSIONS BETWEEN TIMESTAMP [lower bound] AND [upper bound] | VERSIONS BETWEEN SCN [lower bound] AND [lower bound]];
Flashback Transaction Query
select column_name from table_name [VERSIONS BETWEEN TIMESTAMP [lower bound] AND [upper bound] | VERSIONS BETWEEN SCN [lower bound] AND [lower bound]];
詳細説明
下記の仮想カラム(versions pseudo-columns)が追加された。
VERSIONS_STARTTIME (start timestamp of version);
VERSIONS_STARTSCN (start SCN of version);
VERSIONS_ENDTIME (end timestamp of version);
VERSIONS_ENDSCN (end SCN of version);
VERSIONS_XID (transaction ID of version); and
VERSIONS_OPERATION (DML operation of version).
サンプル
versions pseudo-columns SQL> SELECT z 2 , VERSIONS_STARTTIME 3 , VERSIONS_ENDTIME 4 , VERSIONS_XID 5 , VERSIONS_OPERATION 6 FROM fbt VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE 7 ORDER BY 8 VERSIONS_ENDTIME; Z VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID VERSIONS_OPERATION -------------------- ------------------------- ------------------------- ---------------- ------------------ Initial population 10-AUG-2005 18:00:53.000 10-AUG-2005 18:01:05.000 040026008A010000 I First update 10-AUG-2005 18:01:05.000 10-AUG-2005 18:01:14.000 040029008A010000 U Second update 10-AUG-2005 18:01:14.000 10-AUG-2005 18:01:26.000 040027008A010000 U Second update 10-AUG-2005 18:01:26.000 040028008A010000 D 4 rows selected.
See Also
Flashbackup Drop
概要 リサイクルビンの利用で、削除されたオブジェクトを蓄積し、コマンドで戻せるようにした仕組みである。
文法
【 FLASHBACK TABLE 】表を以前の状態にリストアする FLASHBACK TABLE ┬ [ スキーマ . ] 表名 ┬→ └ ← , ────────┘ → TO ┬ { SCN | TIMESTAMP } 式 [ { ENABLE | DISABLE } TRIGGERS ] ┬ ; │[ 指定した時点に表を戻す ] │ └ BEFORE DROP [ RENAME TO 表名 ] ─────────────┘ [ 削除された表を復元する ]
詳細説明
リサイクルビンの利用で、削除されたオブジェクトは内部リネームされただけである。フラッシュバックの場合、内部リネームで戻すことができる。但し、領域オーバーの場合自動的に削除済みオブジェクトはパージされる。
サンプル
flashback table "BIN$Ti1YXahFj6LgQABAQBrOw==$0" to before drop rename to table_name_before_drop;
See Also
Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 1 (10.1) Chapter 9 Flashback Technology: Recovering from Logical Corruptions