导航

20.2 使用FlashBack Table 恢复表到先前状态

Posted on 2009-02-19 17:03  毅无涯  阅读(241)  评论(0编辑  收藏  举报

如果要在某个表上使用 FlashBack Table 特征,则要求必须具有以下条件:

用户必须具有 FlashBack ANY TABLE 系统权限或 FlashBack 对象权限

用户必须在表上具有SELECT、INSERT、DELETE 和 ALTER 权限

必须合理设置初始化参数undo_retention, 以确保 UNDO 信息保留足够时间

必须激活行移动特征:ALTER TABLE EMP ENABLE ROW MOVEMENT

(1) 激活行移动特征

(2) 模拟用户 DML 误操作

(3) 使用 FLASHBACK TABLE 恢复表数据到先前时间点

 

SCN:

SQL> conn scott/tiger@demo
已连接。
SQL> alter table emp enable row movement;

表已更改。

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1975966

SQL> update emp set sal=sal*1.5 where deptno=10;

已更新3行。

SQL> commit;

提交完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            3675
KING             7500
MILLER           1950

SQL> flashback table emp to scn 1975966;

闪回完成。

SQL> select ename, sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            2450
KING             5000
MILLER           1300

 

TIMESTAMP:

SQL> host date
当前日期: 2009-02-19 星期四
输入新日期: (年月日)

SQL> host time
当前时间: 16:58:11.12
输入新时间:

SQL> update emp set sal=sal*1.5 where deptno=10;

已更新3行。

SQL> commit;

提交完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            3675
KING             7500
MILLER           1950

SQL> flashback table emp to timestamp to_timestamp('2009-02-19 16:58:11','YYYY-MM-DD HH24:MI:SS');

闪回完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            2450
KING             5000
MILLER           1300