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:也可以按照时间上来恢复
本文通过实例演示了如何使用Oracle数据库的闪回功能来恢复已删除的数据。具体步骤包括以DBA身份登录、插入和删除数据、获取System Change Number (SCN)、按SCN恢复数据并最终将数据恢复到原始状态。
579

被折叠的 条评论
为什么被折叠?



