Oracle数据库中对误删数据的恢复
来源:互联网 发布:微信java通用版1.0精简 编辑:程序博客网 时间:2024/06/03 04:25
如果一不小心对Oracle数据库中的数据进行了误删除操作,那么如何进行数据恢复呢(不考虑全库备份和利用归档日志)?如果使用的是9i以及之后的版本,那么我们可以采用闪回技术对误删除的数据进行恢复。方式有两种。
原理:
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
*确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。
*用语句找出删除的数据。
*把删除的数据重新插入原表。
方式1:基于时间戳的数据恢复 as of timestamp
1、首先要查询到系统的当前时间,必须以系统时间的时间戳为基准。
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
2、查询当前系统时间20分钟前的数据。SYSDATE是系统函数,用来取得当前的系统时间(以天为单位),SYSDATE-20/1440,得出的就是距当前时间20分钟前的记录了(60*24=1440)。
select * from 表名 as of timestamp sysdate-20/1440;
3、将20分钟前的数据重新插回表中(注意不要存在相同的主键)。由于在时间上的不准确,可能会导致恢复的数据中包括了一些已经在表中的数据。这就会引起主键不唯一的冲突,为了避免这样冲突,建议将步骤2的数据恢复到新表中。
**恢复到原来的表**insert into 表名 (select * from 表名 as of timestamp sysdate-20/1440 );**恢复到新表**create table 新表名as select * from 误操作的表as of timestamp sysdate-20/1440 ;时间点
注意:
AS OF TIMESTAMP方式的使用非常方便,但是在某些情况下,我们建议使用AS OF SCN的方式执行Flashback Query。如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。
方式2:基于SCN的数据恢复 as of scn
1、获得当前数据库的scn号,查询到的scn号为:1499223
select current_scn from v$database; (切换到sys用户或system用户查询)
2、查询当前scn号之前的scn
select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)
3、恢复删除且已提交的数据
flashback table 表名 to scn 1499220;
参考链接
- http://www.cnblogs.com/kangxuebin/archive/2013/05/29/3106183.html
- http://www.cnblogs.com/hqbhonker/p/3977200.html
- http://blog.csdn.net/itdada/article/details/52746392
- http://blog.csdn.net/zhouwubin123/article/details/6617837
- Oracle数据库中对误删数据的恢复
- Oracle数据库中误删除数据后恢复的方法
- oracle数据库误删数据恢复方法
- 在项目中遇到误删表中数据,如何恢复oracle数据库表中数据的恢复问题
- 恢复oracle数据库表、表中数据被误删的操作
- oracle数据库表中数据删除的恢复方法
- 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库
- oracle数据库误改数据之后的恢复办法.
- Oracle数据库恢复误删除数据的方法
- 误删除Oracle数据库数据的恢复方法
- Oracle数据库一些简单的数据恢复
- oracle数据库,数据恢复的方法
- ORACLE误删数据的恢复
- ORACLE误删数据的恢复
- ORACLE误删数据的恢复
- oracle误删数据的恢复办法
- ORACLE 误删数据的恢复[转]
- Oracle 误删数据的恢复方法
- 设置点击UITableCell颜色不改变怎么实现?
- 图像二值化----otsu(最大类间方差法、大津算法)
- 欢迎使用CSDN-markdown编辑器
- JAVA使用jxl读写Excel
- Filter 过滤器
- Oracle数据库中对误删数据的恢复
- 关于浮点数的小数部分的二进制表示、精度以及浮点数如何在内存中存放问题
- 如何使用TestFlight进行App构建版本测试
- 日历游戏
- 构造函数的强制调用
- Atitit r2017 r5 doc list on home ntpc.docx 驱动器 D 中的卷是 p2soft 卷的序列号是 9AD0-D3C8 D:\ati\r2017 v4 r
- 【MongoDB+docker】docker 配置 mongodb 复制集
- dwz框架常用记录
- 基于SnapDragonBoard410c的远程防盗系统 (二)