我按下列步骤进行操作:(环境:PL/SQL DEVELOPER)
1、select * from ss 
结果:A B C 
     2 2 2
2、select dbms_flashback.get_system_change_number from dual; 获取SCN
结果:7043511
3、delete from ss 
   commit;
结果:一行被删除
4、在命令行输入下列语句:SQL> exec  dbms_flashback.enable_at_system_change_number(7043511); 闪回到原来的状态
 
结果:PL/SQL procedure successfully completed
5、执行select * from ss 
结果: A B C 没有数据,是间隔5分钟还是怎么,另外小弟还有一问题提问:如果我在闪回之前又新加了一条纪录,那么如果我闪回成功的话,我新加的记录还存在么?最好解答下,不要给网址,谢谢

解决方案 »

  1.   

    闪回成功的话,新加记录不存在
    楼主确认闪回成功了么,检查alert.log看看有没有错误输出,或者其他信息
    正常情况下是没有问题的
    SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER
    ------------------------
                     1281361SQL> select * from test;ID
    ----------
    1.2.1     
    1.1       
    1.2       
    1.10      
    1.12      
    1.1.2     
    1.1.1     
    1.1.12    
    xxx       
    222       10 rows selected.SQL> delete from test where id = 'xxx';1 row deleted.SQL> commit;Commit complete.SQL> select * from test;ID
    ----------
    1.2.1     
    1.1       
    1.2       
    1.10      
    1.12      
    1.1.2     
    1.1.1     
    1.1.12    
    222       9 rows selected.SQL> select * from test as of scn 1281361;ID
    ----------
    1.2.1     
    1.1       
    1.2       
    1.10      
    1.12      
    1.1.2     
    1.1.1
    1.1.12
    xxx
    22210 rows selected.SQL> exec dbms_flashback.enable_at_system_change_number(1281361);PL/SQL procedure successfully completed.SQL> select *from test;ID
    ----------
    1.2.1
    1.1
    1.2
    1.10
    1.12
    1.1.2
    1.1.1
    1.1.12
    xxx
    22210 rows selected.
      

  2.   

    奇怪了,我的步骤和你的基本上一样,怎么我的就不行呢?另外alert.log查看的路径是?
      

  3.   

    用闪回查询恢复数据也可以.SELECT * FROM ss AS OF scn 7043511;insert into ss
    SELECT * FROM ss AS OF scn 7043511;
      

  4.   


    1楼的兄弟,我按照你的步骤尝试了N遍,就是在最后查询的时候没有数据,我在9I、10G都测试了 ,结果是一样的,4楼的兄弟的做法可以闪回
      

  5.   

    使用flashback闪回删除掉数据的表SQL>SELECT current_scn from v$database;
    // 查看数据库SCN
    SQL>ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
    //更改时间格式
    SQL>select * from table1 as of scn XXXX;
    SQL>select * from table1 as of timestamp '2009/02/09 16:30:00';