不小心delete掉一些数据,而且已经commit了,怎么办?我们可以基于回闪(flashback)和scn进行一些数据的恢复。

--查询当前scn

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

4787371

SQL> SELECT COUNT(*) FROM hjm_tb_test01;

COUNT(*)

----------

10072

--模拟误删除数据:

SQL> delete from hjm_tb_test01 where object_id<=5000;

已删除4940行。

SQL> commit;

提交完成。

--删除数据后只有5132行了,原为10072行

SQL> SELECT COUNT(*) FROM hjm_tb_test01;

COUNT(*)

----------

5132

--创建用于恢复的表,将恢复数据插入其中

SQL> create table hjm_tb_test01_recov as select * from hjm_tb_test01 where 1=0;

表已创建。

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

4788873

SQL> select count(*) from hjm_tb_test01 as of scn &scn;

输入 scn 的值: 4788873

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788873

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4787873

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4787873

COUNT(*)

----------

10072

SQL> /

输入 scn 的值: 4788872

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788872

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788772

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788772

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4787972

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4787972

COUNT(*)

----------

10072

SQL> /

输入 scn 的值: 4788072

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788072

COUNT(*)

----------

10072

SQL>

SQL> /

输入 scn 的值: 4788999

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788999

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788500

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788500

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788700

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788700

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788800

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788800

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788900

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788900

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788950

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788950

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788990

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788990

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788995

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788995

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788998

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788998

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788999

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788999

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788572

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788572

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788200

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788200

COUNT(*)

----------

10072

SQL> /

输入 scn 的值: 4788300

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788300

COUNT(*)

----------

10072

SQL> /

输入 scn 的值: 4788400

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788400

COUNT(*)

----------

5132

SQL> /

输入 scn 的值: 4788350

原值 1: select count(*) from hjm_tb_test01 as of scn &scn

新值 1: select count(*) from hjm_tb_test01 as of scn 4788350

COUNT(*)

----------

10072

SQL> insert into hjm_tb_test01_recov select * from hjm_tb_test01 as of scn 4788350;

已创建10072行。

SQL> commit;

提交完成。

SQL>

oracle scn与数据恢复,基于scn的数据恢复相关推荐

  1. Oracle Golden Gate 系列十二 -- GG 数据初始化装载二 基于SCN 的初始化 说明 与 示例...

    一.初始化说明 GG实施过程中,初始化是一个重要的工作,尤其是要初始化的数据较多,并且系统又是7*24的时. 对于静态初始化,把业务停掉,DB 上的数据就不会有变化,这时候,我们可以用expdp/im ...

  2. 基于SCN的查询(AS OF SCN)

    仍以前文中创建的表为例,既然是基于SCN的查询,我们首先就需要得到SCN,这里我们通过DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER函数来获取Oracle当前的SCN, ...

  3. 获取当前scn号scn1_11.1.1.2 基于SCN的查询(AS OF SCN)

    11.1.1.2  基于SCN的查询(AS OF SCN) 仍以前文中创建的表为例,既然是基于SCN的查询,我们首先就需要得到SCN,这里我们通过DBMS_FLASHBACK.GET_SYSTEM_C ...

  4. 基于SCN和时间点的不完全恢复

    完全恢复与不完全恢复是数据库的两种恢复方式,顾名思义,他们的区别就是恢复后数据没有没丢失,不完全恢复是指恢复后有部分数据丢失,而完全恢复没有. 完整恢复是由于Oracle应用了归档日志和联机重做日志中 ...

  5. Oracle 的 DBMS_SCN 修正以及 SCN 的 auto-rollover 新特性

    在 Oracle 11.2.0.2 之后,随着一系列 SCN 耗尽问题的出现,很多补丁涌现出来,一个新的 Package 增加进来. 这个 Package 就是 DBMS_SCN. 如果你的数据库中存 ...

  6. oracle技术之检查点及SCN深入研究

    一.检查点概述 大多数关系型数据库都采用"在提交时并不强迫针对数据块的修改完成"而是"提交时保证修改记录(以重做日志的形式)写入日志文件"的机制,来获得性能的优 ...

  7. Oracle数据文件scn不一致,数据文件SCN的一致性问题

    1.数据库正常运行中,所有数据文件的SCN都是一致的吗? 2.将一数据文件offline后,再将其online时,这个数据文件的SCN会前提吗?假如是,前提到的SCN是怎么确定的? 1.数据库正常运行 ...

  8. mysql 跳过一个事物_MySQL基于GTID的数据恢复

    大家好,我是anyux.本文介绍MySQL基于GTID的数据恢复. 文末总结基于GTID的数据恢复,并有导图 创建一个数据库 gtid,在gtid库下创建表tmp,插入5行数据 create data ...

  9. Oracle 数据库中的多种SCN汇总

    SCN: 简单介绍SCN可称为系统改变号或者系统提交号,是Oracle内部的一种时间机制. SCN的作用: (1)一致性读,比如Oracle在读取数据时会比较读开始的SCN值和数据块的SCN值,从而判 ...

最新文章

  1. 瑞幸咖啡百万大咖活动 记人生第一次豪赌,净赔了200元钱。
  2. App架构设计经验谈:展示层的设计
  3. 内附 PPT | 新零售里程碑,神策数据新起点
  4. Ubuntu 15.04 安装TensorFlow(源码编译) 及测试梵高作画
  5. 今天才发现自己美工其实很厉害!
  6. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
  7. 最优二叉搜索树(动态规划)
  8. linux make 无法生成 .o gch,Linux--makefile的使用
  9. VC++6.0 DDK 环境配置
  10. 阿里巴巴高级Java面试题(首发,70道)
  11. deepin20.7安装mysql8.0.30教程
  12. C# http请求挂代理
  13. 把这本书讲给更多人(中):两次历史上著名的谋杀案?
  14. [Microsoft SQL Server Management Studio]SSMS查询年龄最大学生的姓名和年龄问题及查询最高的学生的学号问题分析及解决
  15. 如何根据自己的需要培养游戏开发技能?又一篇游戏编程入门指南
  16. Android9.0中应用如何通过SAF框架写入外置SD卡
  17. window.showModalDialog()用法
  18. Installing Zune software on Windows Server 2003 SP2 (x86)
  19. 单片机光敏电阻控制蜂鸣器_小白求助——如何用光敏电阻控制蜂鸣器开关?(晴天娃娃闹钟)...
  20. 最大赢家!TCL X10获SID 2021年度最佳显示产品奖

热门文章

  1. 使用微博登录,按钮点击不动(微博jssdk)
  2. 实验四、UML动态建模之顺序图分析与设计【PowerDesginer】
  3. 坑死人不偿命之微信支付回调
  4. java程序化交易软件_TradeApi为A股程序化交易接口2.9.0发布,支持2019年12月的交易客户端版本...
  5. 生鲜电商的七种模式分析
  6. contains方法 java_contains方法如何在Java项目中使用
  7. AIDL for HALs实战
  8. Linux服务器安装配置Redis
  9. Unity记一次非主流动画入门
  10. 幽灵字符 \u200B