ORACLE 利用SCN恢复误delete的表

--kg是误删除的表
SQL> select count(*) from  kg;
  COUNT(*)
----------
    820861
SQL> delete from kg;
820861 rows deleted
SQL> commit;
Commit complete
SQL> select count(*) from kg;
  COUNT(*)
----------
         0
SQL> rollback;
Rollback complete
SQL> select count(*) from kg;
  COUNT(*)
----------
         0
--kg被删除且已经提交。

--查询此时数据库的SCN
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 4915780
SQL> select count(*) from kg as of scn 4915780;
  COUNT(*)
----------
         0
--创建表howard存放数据库的SCN
SQL> create table howard(count int,scn int);
Table created
SQL> DECLARE
     i INT:=4915600;
     BEGIN
        FOR i IN 4915600..4915782 LOOP
          INSERT INTO howard( SCN) VALUES (i );
          UPDATE howard SET COUNT =( SELECT COUNT(*) FROM kg AS OF SCN i) WHERE SCN= i;
        END LOOP ;
     END ;
     /
SQL> SELECT * FROM howard
SQL> /

                                  COUNT                                     SCN
--------------------------------------- ---------------------------------------
                                 820861                                 4915704
                                 820861                                 4915705
                                 820861                                  4915706
                                      0                                 4915707
                                      0                                 4915708
                                      0                                 4915709

--得到删除前数据库的SCN,恢复表数据
SQL>  select count(*) from kg  as of scn 4915706;
  COUNT(*)
----------
    820861
SQL> select count(*) from kg  as of scn 4915707;
  COUNT(*)
----------
         0
SQL>  insert into kg select * from kg as of scn 4915706;
820861 rows inserted
SQL> drop table howard;
Table dropped
SQL> commit;
Commit complete
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值