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

NO IMAGE

手違いで、大事なデータを削除したことはないでしょうか?

万が一にも、コミットしようものならDB管理者にポコポコにされてしまうでしょう。

ORA8.gif

ですが、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

ORA4.gif

  SNCごとに時間が割り振ってありますので、戻したい時間に近いSNCを選びましょう。

3.フラッシュバックテーブルの実行
  先ほど参照したSNCを指定し、フラッシュバックします。

    FLASHBACK TABLE VERY_DAIZI_TABLE TO SCN(1597589092)

 
ORA5.gif

4.データの確認
  データが戻っていれば成功です。
  これで怒られずにすみます!

ORA6.gif