1.SCN 概念
SCN是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。Oracle数据库中一共有4种SCN分别为
系统检查点SCN: 系统检查点SCN位于控制文件中,当检查点进程启动时(ckpt),Oracle就把系统检查点的SCN存储到控制文件中
2. 使用闪回操作时一些前提条件
-
该表的Flashback权限
-
拥有该表的SELECT\INSERT\DELETE\ALTER权限
-
必须保证表示ROW MOVEMENT
-
采用PURGE参数删除表中数据时不能使用Flashback进行恢复
3. 闪回查询
-
作用: 用以查询以前的被删除资料,用以在执行删除恢复时,有一个正确的scn或者时间戳,系统并没有进行恢复
-
语法: select * from bxj_tst_recyclebin as of [scn or timestamp]
4. 闪回恢复
-
作用: 通过已确认的SCN和时间戳对表被删除的数据真正进行恢复
-
语法: flashback table bxj_tst_recyclebin to [scn or timestamp]
5. 闪回查询恢复前,执行以下语句
alter table bxj_tst_recyclebin enable row movement
二、案例1 – 通过时间戳进行闪回恢复
Step1. 创建8笔测试资料如下
Step2. 删除其中4笔资料,COMMIT后无法Rollback,通过flashback进行恢复
Step3.1 通过时间间隔确定需恢复的时间戳,在没有恢复之前, 通过闪回查询该事件戳为8笔资料,确定以该时间戳进行恢复
alter table bxj_tst_recyclebin enable row movement
Step3.2 直接通过具体的时间戳进行恢复, 在没有恢复之前, 通过闪回查询该事件戳为8笔资料,确定以该时间戳进行恢复
Step4. 通过flashback进行恢复
flashback table bxj_tst_recyclebin to timestamp(systimestamp – interval’600’second); flashback table bxj_tst_recyclebin to timestamp(to_timestamp(to_date(‘20140702 11:40:00′,’YYYYMMDD HH:MI:SS’)));
Step5. 恢复完成后,无需闪回查询,即可以查询到该4笔被删除资料
三、案例2 – 通过SCN进行闪回恢复
Step1. 系统一旦将事物Commit后,会系统产生一个SCN,一旦发现误删除数据,马上查询当前的SCN
Step2. 通过闪回查询,确认该SCN是否能查询出该4笔被删除资料
Step4. SCN确认无误后,进行闪回恢复操作
flashback table bxj_tst_recyclebin to scn 10132214657206
Step5. 恢复完成后,无需闪回查询,即可以查询到该4笔被删除资料