导航

20.1 使用FlashBack 查询实现行级恢复

Posted on 2009-02-19 16:48  毅无涯  阅读(115)  评论(0编辑  收藏  举报

(1) 模拟用户误操作

SQL> conn scott/tiger@demo
已连接。
SQL> host date
当前日期: 2009-02-19 星期四
输入新日期: (年月日)

SQL> host time
当前时间: 16:40:43.29
输入新时间:

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1975467

SQL> delete from emp where deptno=30;

已删除6行。

SQL> commit;

提交完成。

 

(2) 使用 FlashBack 查询取得早期时间点表行数据

SQL> select ename,sal,job,deptno from emp as of timestamp
  2  to_timestamp('2009-02-19 14:40:43','YYYY-MM-DD HH24:MI:SS')
  3  where deptno=30;

ENAME             SAL JOB           DEPTNO
---------- ---------- --------- ----------
ALLEN            1600 SALESMAN          30
WARD             1250 SALESMAN          30
MARTIN           1250 SALESMAN          30
BLAKE            2850 MANAGER           30
TURNER           1500 SALESMAN          30
JAMES             950 CLERK             30

已选择6行。

SQL> select ename,sal,job,deptno from emp as of scn 1975467 where deptno=30;

ENAME             SAL JOB           DEPTNO
---------- ---------- --------- ----------
ALLEN            1600 SALESMAN          30
WARD             1250 SALESMAN          30
MARTIN           1250 SALESMAN          30
BLAKE            2850 MANAGER           30
TURNER           1500 SALESMAN          30
JAMES             950 CLERK             30

已选择6行。

 

(3) 使用 FlashBack 查询恢复表行数据

SQL> insert into emp select * from emp as of scn 1975467 where deptno=30;

已创建6行。

SQL> commit;

提交完成。