我按下列步骤进行操作:(环境: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、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分钟还是怎么,另外小弟还有一问题提问:如果我在闪回之前又新加了一条纪录,那么如果我闪回成功的话,我新加的记录还存在么?最好解答下,不要给网址,谢谢
楼主确认闪回成功了么,检查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.
SELECT * FROM ss AS OF scn 7043511;
1楼的兄弟,我按照你的步骤尝试了N遍,就是在最后查询的时候没有数据,我在9I、10G都测试了 ,结果是一样的,4楼的兄弟的做法可以闪回
// 查看数据库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';