zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    jquery学会的
    oracle技巧-持续更新
    c语言技巧--长期更新
    2019暑假集训 最大子树和
    2019暑假集训 细胞分裂
    2019暑假集训 金明的预算方案
    2019暑假集训 能量项链
    2019暑假集训 神经网络
    0023-特殊的方程
    0022-并联电阻
  • 原文地址:https://www.cnblogs.com/sddychj/p/4627337.html
Copyright © 2011-2022 走看看