1:以具有dba身份的用户登录,如果不是dba用户在使用过程中无法查看scn(System Change Number).
登录到sqlplus : sqlplus rpg/rpg;
设置显示时间标识:set time on;
本例使用数据表为:
create table STU
(
ID INTEGER,
SNM VARCHAR2(30)
)
先加入一条数据
16:17:20 SQL> insert into stu values(1,'rpg');
16:23:51 SQL> select * from stu;
ID SNM
--------------------------------------- ------------------------------
2 rpg
1 rpg
---删除数据 使用delete不要使用truncate
16:25:42 SQL> delete from stu;
2 rows deleted
---注意此处要提交修改的结果
16:26:03 SQL> commit;
Commit complete
---查看当前表,可见数据已经被删除
16:26:11 SQL> select * from stu;
ID SNM
--------------------------------------- ------------------------------
---查看当前dbms_flashback得到scn以便于确认当前数据的存在范围
16:27:14 SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
554631
--修改后面的scn的值,测试在哪一个scn上数据还存在
16:27:32 SQL> select * from stu as of scn 554625;
ID SNM
--------------------------------------- ------------------------------
16:28:40 SQL> select * from stu as of scn 554590;
ID SNM
--------------------------------------- ------------------------------
---可见在下面554570以前的号上数据是存在的
16:28:51 SQL> select * from stu as of scn 554570;
ID SNM
--------------------------------------- ------------------------------
2 rpg
---恢复数据到当前表中
16:28:58 SQL> insert into stu select * from stu as of scn 554570;
1 row inserted
--提交
16:30:24 SQL> commit;
Commit complete
--- 查看恢复结果
16:30:28 SQL> select * from stu;
ID SNM
--------------------------------------- ------------------------------
2 rpg
PS:也可以按照时间上来恢复