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. Codeforces Round #116 (Div. 2, ACM-ICPC Rules)

    Codeforces Round #116 (Div. 2, ACM-ICPC Rules) 代码 Codeforces Round #116 (Div. 2, ACM-ICPC Rules) A. ...

  2. Codeforces Round #111 (Div. 2)

    Codeforces Round #111 (Div. 2) C. Find Pair 题意 给\(N(N \le 10^5)\)个数,在所有\(N^2\)对数中求第\(K(K \le N^2)\)对 ...

  3. linux 命令查看CPU和内存信息

    几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...

  4. Android——进度对话框

    java类代码: //普通进度对话框 public void bt8_onClick(View v) { final ProgressDialog progressDialog = new Progr ...

  5. poj1611 带权并查集

    题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染. 带权并查 ...

  6. Oracle数据库五种约束

    oracle 数据库 数据表的5个约束类型:1.主键约束2.外键约束3.唯一约束4.检查约束5.非空约束 主键约束:用来唯一标示表中的一个列,一个表中的主键约束只能有一个,但是可以在一个主键约束中包含 ...

  7. 【BZOJ1010】【HNOI2008】玩具装箱

    继续看黄学长代码 原题: P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...

  8. 如何在python3.3用 map filter reduce

    在3.3里,如果直接使用map(), filter(), reduce(), 会出现 >>> def f(x): return x % 2 != 0 and x % 3 != 0  ...

  9. CLR thread pool

    Thread Pooling https://msdn.microsoft.com/en-us/library/windows/desktop/ms686756(v=vs.85).aspx Threa ...

  10. Android开发常用的一些第三方网站

    聚合数据-免费数据调用 https://www.juhe.cn/ 有赞- 免费的微商城 http://youzan.com/ 秀米微信图文编辑器 http://xiumi.us/ 禅道项目管理软件 h ...