オラクルを極める③!【フラッシュバック テーブル詳細 編】
- 2008.11.06
- IT関連

手違いで、大事なデータを削除したことはないでしょうか?
万が一にも、コミットしようものならDB管理者にポコポコにされてしまうでしょう。
ですが、ORACLEの10Gからはこのような人為的なミスに対処するため、フラッシュバックという機能が追加されています。
フラッシュバック機能の一つ、フラッシュバックテーブルを取り上げて見たいと思います。
■フラッシュバックテーブルとは?
・テーブルのデータを特定の時点まで戻すことができる。
・データベースをオフラインにしなくてもよい。
■フラッシュバックテーブルを行える条件
①対象テーブルのSELECT/INSERT/DELETE/ALTER権限を持っている
②FLASHBACK ANY TABLEシステム権限もしくは、
対象テーブルに対するFLASHBACKオブジェクト権限を持っている
③対象テーブルの行移動が有効になっている。
何時まで戻れるというわけで無く、UNDO表領域の内にデータが保持されている間だけですので、ご注意ください。
フラッシュバックテーブルの手順書。
1.表の行移動を有効にする。
デフォルトで有効になっていない場合が多いので、まず行移動を有効に設定する必要があります。
ALTER TABLE VERY_DAIZI_TABLE ENABLE ROW MOVEMENT
2.SNCを調べる。
フラッシュバックテーブルでは、どの時点まで戻ってデータをリストアしたいか指定する必要があります。
タイムスタンプでの指定も可能ですが、今回はSNCを指定してみます。
(※SNCとは、トランザクションの毎にシーケンシャルに割り振られる番号です)
SELECT
SCN,
TIME_DP
FROM
SYS.SMON_SCN_TIME
ORDER BY
TIME_DP DESC
SNCごとに時間が割り振ってありますので、戻したい時間に近いSNCを選びましょう。
3.フラッシュバックテーブルの実行
先ほど参照したSNCを指定し、フラッシュバックします。
FLASHBACK TABLE VERY_DAIZI_TABLE TO SCN(1597589092)
4.データの確認
データが戻っていれば成功です。
これで怒られずにすみます!
-
前の記事
ブログデビュー 2008.11.06
-
次の記事
オラクルを極める②!【フラッシュバック テーブル編】 2008.11.06