oracle 闪回查询原理,oracle闪回技术总结之闪回查询(DML)

我们需要把时间显示出来set time on;就可以显示出时间。先把表delete删除,然后在插入几行数据。

SQL> set time on;

SQL> create table emp1 as select * from scott.emp;

01:27:52 SQL> delete from emp1;

14 rows deleted.

01:28:44 SQL> commit;

Commit complete.

01:29:10 SQL> insert into emp1 select * from scott.emp whererownum<=3;

3 rows created.

01:29:22 SQL> commit;

Commit complete.

01:30:25 SQL> select count(*) from emp1;

COUNT(*)

----------

3

我们需要闪回查询出,时间为上面的操作时间,在01:27:52时delete删除的emp1这个表。然后,你在需要确定一下数据库的年月日,我这里的年月日就是今天2015年11月23日。

01:35:03SQL> select * from emp1 as of timestampto_timestamp('2015-11-23 01:27:52','yyyy-mm-dd hh24:mi:ss');

EMPNO ENAME     JOB               MGRHIREDATE              SAL        COMM          DEPTNO

-------------------- --------- ---------- ------------ ---------- ---------- ----------

7369 SMITH     CLERK              790217-DEC-80              800                      20

7499 ALLEN     SALESMAN              769820-FEB-81             1600         300              30

7521 WARD      SALESMAN              769822-FEB-81             1250         500              30

7566 JONES     MANAGER              783902-APR-81             2975                      20

7654 MARTIN    SALESMAN              769828-SEP-81             1250        1400              30

7698 BLAKE     MANAGER              783901-MAY-81             2850                      30

7782 CLARK     MANAGER              783909-JUN-81             2450                      10

7788 SCOTT     ANALYST              756619-APR-87             3000                      20

7839 KING       PRESIDENT          17-NOV-81             5000                      10

7844 TURNER    SALESMAN              769808-SEP-81             1500           0              30

7876 ADAMS     CLERK              778823-MAY-87             1100                      20

EMPNO ENAME     JOB               MGRHIREDATE              SAL        COMM          DEPTNO

-------------------- --------- ---------- ------------ ---------- ---------- ----------

7900 JAMES     CLERK              769803-DEC-81              950                      30

7902 FORD      ANALYST              756603-DEC-81             3000                      20

7934 MILLER    CLERK              778223-JAN-82             1300                      10

14 rowsselected.

这时,我们已经闪回查询看到了在01:27:52时的emp11的表了。

这时我们需要把查询出来的结果,放在一个新表中保存,这个新表需要自己创建然后插入。新表的名字是epm1_bak

01:38:02 SQL>create table emp1_bak as select * from emp1 as oftimestamp to_timestamp('2015-11-23 01:27:52','yyyy-mm-dd hh24:mi:ss');

Table created.

之前我们在emp1中,又插入了三条不要的垃圾数据,这时把原来那三条数据truncate掉。

01:38:21 SQL> select count(*) from emp1;

COUNT(*)

----------

3

01:39:38 SQL> truncate table emp1;

Table truncated.

这时候emp1的表数据已经清空了,我们在把新表epm1_bak的数据插入到emp1中即可,数据已经得到了恢复

01:39:44 SQL>insert into emp1 select * from emp1_bak;

14 rows created.

查看一下emp1的数据总数,应该为原来的14条。

01:40:52 SQL> select count(*) from emp1;

COUNT(*)

----------

14

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值