2014-07-02 Created By BaoXinjian


在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


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


Step1. 系统一旦将事物Commit后,会系统产生一个SCN,一旦发现误删除数据,马上查询当前的SCN

Step2. 通过闪回查询,确认该SCN是否能查询出该4笔被删除资料

Step4. SCN确认无误后,进行闪回恢复操作

flashback table bxj_tst_recyclebin to scn 10132214657206

Step5. 恢复完成后,无需闪回查询,即可以查询到该4笔被删除资料

Thanks and Regardds

PLSQL_闪回操作1_Flashback Query的更多相关文章

  1. PLSQL_闪回操作4_Flashback Drop

    2014-06-25 Created By BaoXinjian

  2. PLSQL_闪回操作6_Flashback Database

    2014-12-09 Created By BaoXinjian

  3. PLSQL_闪回操作5_Flashback Table

    2014-12-09 Created By BaoXinjian

  4. PLSQL_闪回操作3_Fashback Transaction Query

    2014-12-09 Created By BaoXinjian

  5. PLSQL_闪回操作2_Fashback Version Query

    2014-12-09 Created By BaoXinjian

  6. MySQL模拟Oralce闪回操作

    在前面的文章中我们介绍了MySQL误操作后数据恢复(update,delete忘加where条件),大概操作是通过sed命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作 ...

  7. PLSQL_闪回删除FlashBack Delete表误删除如何进行恢复(案例)

    2014-07-02 Created By BaoXinjian

  8. PLSQL_闪回删除FlashBack Drop表误删除如何进行恢复(案例)

    2014-06-25 Created By BaoXinjian

  9. Oracle闪回操作

    Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select  to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...

随机推荐

  1. POJ-2378 Tree Cutting

    题目大意:一棵n个节点的树,找出所有的点满足:删除它之后,产生的最大(这里节点数最多即为最大)新树中节点数不超n的一半. 题目分析:两次深搜,过程类似求重心. 代码如下: # include<i ...

  2. ps命令详解(转)

    原文地址:http://apps.hi.baidu.com/share/detail/32573968 有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行.由于一个应用程序 ...

  3. EDIUS工程里面的素材保存方法

    在实际使用EDIUS剪辑一段视频时,会有好多人问这样一个问题:EDIUS工程里面使用的素材不能自动复制到工程文件夹里面吗,难道要自己一个一个复制进去?面对这样的疑问,来看看小编是如何做的吧. 为了用户 ...

  4. 在Windows 10上安装Oracle 11g数据库出现的问题及解决

    在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...

  5. alpha预乘

    将(r,g,b,a)变为(r*a,g*a,b*a,a)的操作称为alpha预乘. 对于alpha预乘的图片,应使用(One,OneMinusSrcAlpha)进行混合. 使用alpha预乘方式混合出来 ...

  6. nodejs 任务调度使用

    使用的模块 node-schedule的使用 例子: 1:确定时间 var schedule = require("node-schedule");console.log(&quo ...

  7. 详尽介绍FireFox about:config

    一.什么是about:config about: config: 是Firefox的设置页面,Firefox提供了不少高级设置选项在这里以便让你可以更加详细地控制Firefox的运行方式.官方不推荐 ...

  8. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...

  9. eclipse项目里面的类有时候会莫名其妙出现很多错误

    由于eclipse的编译是基于时间戳的判断机制的.因此当你按build   all的时候有些eclipse认为时间戳没有改变的类不会被编译.因此你可以先clean一下再编译.这个时候eclipse会将 ...

  10. DIV+CSS命名规范-转载1

    命名规则说明: 1).所有的命名最好都小写 2).属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="divc ...