如何进行恢复PLSQL闪回误删除FlashBack Delete表

运维 数据库运维
在PLSQL开发时,有时候会遇到对表中数据的误删除,其实遇到这种情况不需要紧张,如果问题较大,请DBA帮忙,如果只是小问题,只需自己处理,利用flashback闪回操作即可,可将表进行恢复。在删除中数据时,系统会自动记录一个SCN和时间戳,按SCN和时间戳就可以查询出被误删除的资料。

 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笔被删除资料 

原文链接:http://www.cnblogs.com/eastsea/p/3819908.html

责任编辑:彭凡 来源: 博客园
相关推荐

2019-10-11 09:55:53

数据工具架构

2018-04-28 15:28:44

数据库MySQL误删除

2009-12-21 16:17:01

2022-12-01 14:02:02

MySQL数据文件

2010-08-17 11:03:01

DB2恢复误删除表

2020-09-30 06:00:00

Linux误删除恢复文件

2018-01-22 13:01:15

数据库MySQLbinlog

2010-08-12 14:03:24

DB2恢复误删除表

2017-04-01 18:30:47

MySQL误删除数据库

2011-07-04 09:59:01

AD误删除

2013-01-18 09:59:35

SQL Server

2017-07-14 15:49:05

MongoDB误删表恢复步骤

2011-08-01 14:50:10

日志挖掘数据库

2017-10-26 15:32:23

数据库Oracle闪回查询

2017-11-20 11:23:12

MySQLMyFlash闪回工具

2010-03-10 15:33:31

Linux误删除

2017-04-01 09:00:00

数据库误删除案例及建议

2013-02-21 10:32:29

Win Server 灾难恢复虚拟机

2010-07-19 11:10:58

SQL Server

2010-03-01 15:12:53

WCF回调契约
点赞
收藏

51CTO技术栈公众号