##数据库表还原到某时间点

还原语句

使用如下sql语句就可以还原整张表格数据到某个时间点,前提条件:该表的表格式没有变动(如:字段的修改等)

ALTER TABLE 表名 ENABLE ROW MOVEMENT;
FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP('2018-02-27 09:00:00', 'yyyy-mm-dd hh24:mi:ss');
  • 测试基础数据
create table DEMO
(id        VARCHAR2(10) not null,dsc       VARCHAR2(100),pid       VARCHAR2(10),is_delete NUMBER default 0 not null,sal       NUMBER
);insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00013', '河南', '00001', 0, null);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00022', '香港', '0001', 0, 10);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00001', '中国', '-1', 0, null);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00011', '陕西', '00001', 0, 400);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00012', '贵州', '00001', 0, 11);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00111', '西安', '00011', 0, null);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00112', '咸阳', '00011', 0, null);
insert into demo (ID, DSC, PID, IS_DELETE, SAL)
values ('00113', '延安', '00011', 0, null);
commit;

以下两种还原表数据方式,可以正对于某个特点条件下删除的数据恢复

1. select…as of timestamp

--1.删除id为'00013'的这条数据
DELETE FROM demo de WHERE de.id = '00013';
COMMIT;
--查询是10分钟前id为'00013'的这条数据
SELECT * FROM demo AS OF TIMESTAMP SYSDATE-10/1440 WHERE ID = '00013';
--插入刚才删除id为'00013'的这条数据
INSERT INTO demo SELECT * FROM demo AS OF TIMESTAMP SYSDATE-10/1440 WHERE id = '00013';
commit;
  • 注解说明

    SYSDATE-10/1440
    SYSDATE-10/1440是啥意思,1440又是怎么来的?

    首先60(分)×24=1440,这样就计算出一天拥有多少分钟,SYSDATE是系统函数,用来取得当前的系统时间(以天为单位),SYSDATE-10/1440,得出的就是距当前时间10分钟前的记录了

2. select…as of scn

--该语句获取scn值2948488
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM dual;
SELECT * FROM demo de WHERE de.id = '00013';
--1.删除id为'00013'的这条数据
DELETE FROM demo de WHERE de.id = '00013';
COMMIT;--查询是scn值为2948488时 表中id为'00013'的这条数据
SELECT * FROM demo AS OF SCN 2948488 WHERE id = '00013';--插入刚才删除id为'00013'的这条数据
INSERT INTO demo SELECT * FROM demo AS OF SCN 2948488 WHERE id = '00013';
COMMIT;
  • 注解说明

    SCN 2884883
    SCN 2884883是啥意思呢? 2884883是怎么来的?

    既然是基于SCN的查询,我们首先就需要得到SCN,这里我们通过DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER函数来获取Oracle当前的SCN,之后再执行数据的修改操作。
    如何获取Oracle数据库当前的SCN?获取当前SCN的方式非常多,除了使用DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER函数外,也可以通过查询V$DATABASE视图中的CURRENT_SCN列获取。不过,不管是通过查询视图,或是通过过程获取,操作的用户都必须拥有要操作对象的访问权限。
    SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM dual;


  • 转换说明
    在Oracle数据库中也可以手动进行时间和SCN的相互转换,Oracle提供了两个函数SCN_TO_TIMESTAMP和 TIMESTAMP_TO_SCN专门干这个
SELECT timestamp_to_scn(SYSDATE) FROM dual ;SELECT to_char(scn_to_timestamp(2884883),'yyyy-mm-dd hh:mm:ss') FROM dual;

oracle 表数据删除后恢复还原相关推荐

  1. sql数据删除后恢复

    sql数据删除后恢复 不小心把客户那边的数据库中删了一千多条数据,之前又没有备份,很郁闷,后来在网上找到一工具(Log Explorer),让我躲过一劫. 首先看一下界面:输入服务器地址,用户名及密码 ...

  2. Oracle数据删除后恢复

    SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构. SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重 ...

  3. 监控录像机数据删除后重录如何恢复

    监控录像机中的视频数据是案件发生后最快还原事实真相的证据之一,但是有些人在作案后会对监控录像机视频数据进行毁坏,导致调取监控录像时,录像没有了,常见的就是将其删除,那么这个时候该怎么办呢?特别是监控视 ...

  4. 手机数据删除后怎么恢复

    手机数据删除后怎么恢复 今天一个朋友告诉我最近学到了一个新东西,说是可以删除手机里面的垃圾文件,然后让手机变得很快,别说,我看了一下他的手机,还是以前的那台,貌似真的要比之前运行的速度快很多了,还有打 ...

  5. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  6. crontab -r删除后恢复

    crontab -r删除后恢复 crontab linux 1.找到crontab日志: 2.找到定期执行过的定时任务 3.找出定时任务执行的周期 禁止crontab -r 在进行定时任务编辑的时候由 ...

  7. 苹果文件系统数据删除后数据恢复技术难度大

    苹果主流文件系统是HFS/HFS+/HFSX,广泛应用于苹果硬件产品,其中包括MAC机器.IPHONE.IPAD.IPOD系列.在数据恢复业务中,经常会碰到苹果设备的数据恢复案例,例如MAC机器误删除 ...

  8. 手机内存卡数据删除怎么恢复?sd卡数据恢复教程

    手机内存卡数据删除怎么恢复?手机内存卡上有时候存着我们相当重要的数据,然而不小心误删的情况下如何恢复数据呢?我们手机运行不太流畅的时候,我们通常会在手机上安装一个大内存的内存卡,把部分数据移到内存卡里 ...

  9. JDBC使用Java反射万能查询Oracle表数据、插入数据——【JDBC编程】

    JDBC使用反射智能查询Oracle表数据 JDBC编程中使用反射技术,动态获取Oracle表数据 1.反射的概念 2.构建Oracle数据库连接方法,关闭方法--便于调用 静态常量类: Oracle ...

最新文章

  1. ora-01033:oracle initializationg or shutdown in progress
  2. Integer及String的equals及==注意示例,涉及自动拆箱、自动装箱以及equals源码分析
  3. boost::edmonds_karp_max_flow用法的测试程序
  4. Asp.Net iframe Cookie 域 的问题!
  5. nodejsmongoangularjs
  6. IDEA工具开发必备设置-极大提高开发效率
  7. Nginx部署前后端分离项目,配置SSL证书,结果刷新报500异常
  8. ubuntu程序安装方法
  9. JavaWeb各大组件生命周期
  10. 花里胡哨的c语言程序,通达信花里胡哨主图公式源码
  11. 关于激活navicat11失败
  12. android 家庭监控,最好的三款家庭安防智能监控APP
  13. 书到用时方恨少,绝知此事要躬行--谈TCP/UDP编程
  14. 2017年个人目标及计划
  15. OPPO R2017线刷刷机包 可解账户锁 刷机教程
  16. 华为MA5626-8密码恢复
  17. 十万部冷知识:“沙特”为什么能赢“阿根廷”
  18. Windows系统共享文件夹或打印机等设备的dos脚本自动化
  19. 关于curses 安装
  20. windows BitLocker对U盘加密过程

热门文章

  1. 纯音乐自制吉他及钢琴简谱合集
  2. 微信请勿打扰昵称,个性好看,来看看!
  3. python color 颜色名称对照
  4. 京东AI:戴口罩人脸识别pytorch开源库
  5. 精简指令集(RISC)和复杂指令集(CISC)的区别
  6. 百度文字识别官方Demo
  7. 花椒六间房“花房之夜”落幕 全新升级不止心动
  8. Acwing语法基础课第六次课-循环判断练习题,连续整数相加,约数,PUM,余数,六个奇数,乘法表,
  9. 52函数零点或方程根的个数讨论
  10. lanyu 激活idea2018.3.5