数据库----Oracle中的闪回(flashback)技术
目录
- 前言
- 正文
- Flashback介绍
- 闪回表数据(Flashback Table)
- 1.闪回到具体时间点
- 2. 闪回到10分钟之前
- 闪回删表(Flashback Drop)
- 1. 闪回被删掉的scott.emp表
- 2. 表被删掉后,又新建了一个同名表,如果试图用上述命令闪回原表,则会报ORA-38312: original name is used by an existing object错误,可重新命名。
- 3. 如果表名重复,则闪回时遵循后入先出的原则。
- 4. 闪回时可指明被恢复的回收站对象
- 5. 可禁用回收站功能
- 6. 删除当前用户回收站的所有对象
- 闪回查询(Flashback Query)
- 1. 查询7788号员工在具体时间的工资
- 2. 查询7788号员工在五分钟前的工资
- 3. 查询具体SCN
- 4. 将7788号员工的工资修改为15分钟之前的值
前言
今天公司的项目由于重新更新了接口对接方式,导致测试数据库同步到的数据信息出现异常,然后再修改之后同步发现还是无效,就想将之前同步的数据重新删除,完全同步一下,结果删除的时候删错表的数据了,将同步的源头表的数据给删了,结果还提交了,这下闯祸了!但是不要怕,出现了问题就要想着解决,接下来我来介绍一下oracle中误操作的解救神器 ----Flashback
正文
Flashback介绍
为了使Oracle数据库从任何逻辑误操作中迅速地恢复,Oracle推出了闪回技术。该技术首先以闪回查询(Flashback Query)出现在Oracle 9i版本中,后来Oracle在10g中对该技术进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,在11g 中,Oracle继续对该技术进行改进和增强,增加了闪回数据归档功能。
使用该特性,可以确保数据库表能够被恢复到之前的某一个时间点上。注意,该功能与最早的9i中的Flashback Query不同,Flashback Query仅仅是得到了表在之前某个时间点上的快照而已,并不改变当前表的状态;而Falshback Table却能够将表及附属对象一起恢复到以前的某个时间点。该功能基于撤销数据(undodata)。
使用闪回表,可将一个或多个表恢复到特定的时间点,而不需要还原备份;从还原表空间检索数据后可执行闪回表操作;执行闪回表操作需要flashback any table权限;必须对要执行闪回操作的表启用行移动。
如果用户没有行移动权限,将不能执行闪回操作,赋予用户行移动权限的sql语句为:
grant flashback any table to 用户名;
闪回表必须有行移动功能
alter table dept enable row movement;
闪回表数据(Flashback Table)
1.闪回到具体时间点
flashback table scott.emp to timestamp to_timestamp('2014-09-16 04:32:00','yyyy-mm-dd hh24:mi:ss');
2. 闪回到10分钟之前
flashback table scott.emp to timestamp(systimestamp-interval '10' minute);
闪回删表(Flashback Drop)
闪回删表指的是撤销“DROP TABLE”的效果。
1. 闪回被删掉的scott.emp表
flashback table scott.emp to before drop;
2. 表被删掉后,又新建了一个同名表,如果试图用上述命令闪回原表,则会报ORA-38312: original name is used by an existing object错误,可重新命名。
flashback table test to before drop rename to test1;
3. 如果表名重复,则闪回时遵循后入先出的原则。
4. 闪回时可指明被恢复的回收站对象
flashback table "BIN$AyId7ZbBjWngUKjADQIIuA==$0" to before drop;
闪回删表的工作原理是:当“drop table”命令执行时,表及其索引并没有被真正删除,其所占空间只是分配给了另一个数据库对象:回收站对象,本质上相当于重命名。注意:表空间在自动增长的压力下会按照先入先出的规则将回收站对象的空间分配给需要空间的段,在将回收站对象耗尽之前数据文件是不会自动增长的。
5. 可禁用回收站功能
alter system set recyclebin='OFF' scope=spfile;
6. 删除当前用户回收站的所有对象
purge recyclebin;
闪回查询(Flashback Query)
以表为单位查询过去的数据称为闪回查询,主要有两种方式:1. 闪回时间点查询。利用select命令的“as of”子句与PL/SQL包dbms_flashback在过去的一个时间点上的查询。2. 闪回版本查询。利用select命令的“versions between”子句在过去的一段时间范围内的查询。
闪回时间点查询
利用“as of”子句
1. 查询7788号员工在具体时间的工资
select sal from emp as of timestamp to_timestamp('2014-09-16 10:02:30','yyyy-mm-dd,hh24:mi:ss') where empno=7788;
2. 查询7788号员工在五分钟前的工资
select sal from emp as of timestamp (systimestamp - interval '5' minute) where empno=7788;
3. 查询具体SCN
select * from emp as of scn 1095000;
4. 将7788号员工的工资修改为15分钟之前的值
update emp set sal=(select sal from emp as of timestamp(systimestamp - interval '15' minute) where empno=7888) where empno=7788;
利用dbms_flashback包
利用dbms_flashback包的enable_at_time或enable_at_scn存储过程锁定一个会话级别的闪回时间目标,即进入闪回模式,随后的查询命令可以省略“as of”,直到调用dbms_flashback_disable存储过程将其关闭为止。
比如,将闪回模式会话定格在15分钟前:
exec dbms_flashback.enable_at_time(systimestamp - interval '15' minute);
现在进行查询,注意,此时查询的是15分钟之前的表。
select sal from emp where empno=7788; --忽略了“as of”子句
此时若访问SYSDATE、SYSTIMESTAMP等日期函数,它们的返回值仍是当前值,而不是15分钟之前的值。
处于闪回会话模式时,执行dml和ddl将报错
update emp set sal=4000 where empno=7788;update emp set sal=4000 where empno=7788
ERROR at line 1:
ORA-08182: operation not supported while in Flashback mode
如果查询完毕,可调用disable存储过程关闭闪回会话模式。
exec dbms_flashback.disable;
咸鱼IT技术交流群:89248062,在这里有一群和你一样有爱、有追求、会生活的朋友! 大家在一起互相支持,共同陪伴,让自己每天都活在丰盛和喜乐中!同时还有庞大的小伙伴团体,在你遇到困扰时给予你及时的帮助,让你从自己的坑洞中快速爬出来,元气满满地重新投入到生活中!
数据库----Oracle中的闪回(flashback)技术相关推荐
- oracle 中的闪回
概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速恢 ...
- Oracle 原理: 闪回 flashback
目录 一.9i中的闪回查询方法 二.10g的闪回版本查询方法 三.10g闪回事物查询方法和恢复数据 四.10g闪回表 五.10g闪回删除 六.10g闪回数据库 一.9i中的闪回查询方法 可以按照时间点 ...
- oracle9i 恢复数据库,oracle 9i使用闪回查询恢复数据库误删问题
如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善.Oracle 9i中提供了一项新的技术手段--闪 ...
- oracle之三闪回flashback
闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...
- 如何打开oracle的回闪,Oracle如何开启闪回功能
Oracle如何开启闪回 Oracle在9i版本的时候引入了闪回技术,在Oracle 10g已经全面提供了闪回功能,主要提供了快速简单恢复数据库误操作的数据的恢复方法,而不用从逻辑备份或物理备份中恢复 ...
- Oracle 10g的闪回机制
第5章Oracle 10g的闪回机制 5.1 简介 在Oracle中,对于提交的变化,是没有办法回退的.所以这时候就可能存在这样一种情况,对于表做了DML操作,并且在提交后才发现,对表的操作是错误的, ...
- oracle9i能闪回吗,[转]Oracle 9i的闪回查询概述
key words: Oracle闪回 flash 1.Oracle 9i的闪回查询功能 在Oracle 9i之前,如果用户错误操作数据后,除了不完全恢复外,没有好的解决办法.Oracle 9i中提供 ...
- oracle之ORA-19815闪回空间爆满问题的处理方法
闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇到这类问题的人参考. 一.错误现象描述 1)应用端错误信息 ...
- oracle rac 快速闪回区 路径,oracle 10g rac配置闪回恢复区 开启归档
DBCA创建数据库的时候,默认是不使用flash_recovery_area,不开启归档的. 本文以2个节点的rac为例,所阐述的内容是在新建数据库后,如何设置闪回恢复区,如何开启归档,设置归档路径. ...
最新文章
- [错误]xstring(525) : warning C4530:
- 你居然还不知道Mysql存储引擎InnoDB分为内存架构、磁盘架构?
- anychart java实例_在.Net开发中使用AnyChart的简单例子(上)
- MSSQL-to-MySQL v5.3, 从MSSQL迁移到mySQL的最佳工具
- 从前馈到反馈:解析循环神经网络(RNN)及其tricks
- matlab表示时间集合,matlab集合操作
- .view-content:overflow:hidden 大错误
- linux 下安装adobe flash的关键。
- jni4net调用net库
- 摩西十诫 摩西简介 世界宗教图谱
- mybatisplus分页单页pageSize最大设置
- CSS 3之设置图片边框
- 卷积的拉普拉斯变换等于拉普拉斯变换的乘积
- pycharm分辨率清晰度
- 最佳实战 | 如何使用腾讯云微搭从0到1开发企业门户应用
- 格力空调设置定时关机
- OpenCV打开相机
- 计算机工程师自荐信英语作文,网络工程师英文自荐信范文
- Java实现伪查询(全匹配+模糊匹配)
- Java实现五子棋对战小游戏【完整版】