フラッシュバック表は、特定の時点に表を巻き戻す機能です。
変更前のデータを保管しておく、UNDO表を利用するので、事前のバックアップは不要です。
例えば、間違ってデータを更新してしまった、削除してしまったという時に有効な機能になります。
まずはフラッシュバック前の状態
行の更新後、commitしているので、rollbackで更新を取り消すことが出来ません。
表が変更されました。
フラッシュバックを行なうために、「行移動の有効化」を前もって実行しておきます。
フラッシュバック表を行ない、表を10分前systimestamp - interval '10' minuteの状態に戻しています。
表が更新前の状態に戻っていることが確認できました。
変更前のデータを保管しておく、UNDO表を利用するので、事前のバックアップは不要です。
例えば、間違ってデータを更新してしまった、削除してしまったという時に有効な機能になります。
SQL> SELECT * FROM regions;
REGION_ID REGION_NAME
---------- ---------------------------------------------------------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
UPDATE regions SET region_name = 'NewYork'
WHERE REGION_ID = 1;
SQL> UPDATE regions SET region_name = 'NewYork'
2 WHERE REGION_ID = 1;
1行が更新されました。
SQL> SELECT * FROM regions;
REGION_ID REGION_NAME
---------- ---------------------------------------------------------------------------
1 NewYork
2 Americas
3 Asia
4 Middle East and Africa
SQL> COMMIT;
コミットが完了しました。
まずはフラッシュバック前の状態
行の更新後、commitしているので、rollbackで更新を取り消すことが出来ません。
SQL> ALTER TABLE regions ENABLE ROW MOVEMENT;
フラッシュバックを行なうために、「行移動の有効化」を前もって実行しておきます。
SQL> FLASHBACK TABLE regions TO TIMESTAMP (systimestamp - interval '10' minute);
フラッシュバックが完了しました。
SQL> SELECT * FROM regions;
REGION_ID REGION_NAME
---------- ---------------------------------------------------------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
フラッシュバック表を行ない、表を10分前systimestamp - interval '10' minuteの状態に戻しています。
表が更新前の状態に戻っていることが確認できました。
コメント