ORACLEMASTER 備忘録9(13/13)
続き
フラッシュバック機能の特徴
フラッシュバック表は、“バックアップをリストアすることなく、表を過去のある時点までリカバリすることができる機能”である。この機能を使用すると、「表の行を誤って追加または削除してしまった」といった、“論理的なデータ破損”から表をリカバリすることができる。
フラッシュバック表には以下の特徴がある。
・“バックアップをリストアしない”ので、他のデータベースオブジェクトには何の影響も与えない。
・データベースを“オープン状態のまま”(使用可能なまま)で処理を実行できる。
・フラッシュバック表に使用するデータはUNDO表領域から取り出される。
・データベース管理者に依頼することなく、ユーザー自身が自分でフラッシュバック表の機能を実行できる。
なお、フラッシュバック表を使用するためには、次のシステム権限とオブジェクト権限が必要である。
・フラッシュバック表の使用に必要な権限
システム権限:FLASHBACK TABLEまたは、FLASHBACK ANY TABLE
オブジェクト権限:SELECT,INSERT,DELETE,ALTER
表での行移動の有効化
フラッシュバック表を実行するには、事前に次のSQL文を実行して、対象の表に対する“行移動”を有効にする必要がある。
・行移動の有効化
ALTER TABLE スキーマ名,表名 ENABLE ROW MOVEMENT;
フラッシュバックドロップ
フラッシュバックドロップは、“表の削除処理を無効にして、削除した表を元に戻す機能”。
DROP TABLE文を実行して表を削除すると、その表は名前が変更されて、関連オブジェクトとともにゴミ箱に入れられる。フラッシュバックドロップを実行すると、ゴミ箱から削除した表の関連オブジェクトを取り出すことができる。
※表に定義されている“制約”や“索引”、“トリガー”といったオブジェクトは、表の“依存オブジェクト”である。表を削除すると、依存オブジェクトもゴミ箱に移動される。(参照整合性制約を除く)。フラッシュバックドロップを実行して表をゴミ箱から取り出すと、依存オブジェクトもゴミ箱から取り出される。ただし、戻された依存オブジェクトの名前は“元の名前には戻されず”、ゴミ箱内のシステムが生成した名前のままになっている。
※表を削除する際にPURGE句を指定すると、表やその依存オブジェクトはゴミ箱に入らず、完全に削除される。したがって、PURGE句を指定して削除した表はフラッシュバックドロップでリカバリすることはできない。