栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

oracle数据库误删的快速恢复操作

oracle数据库误删的快速恢复操作

在生产操作过程中,由于where条件不正确,或功能菜单选择错误,导致数据误删除,造成数据丢失,后悔莫及。其实在短时间内,数据是可以找回来。

在oracle数据库中,对数据进行修改时,oracle首先将数据的原始数据保存到一个回退段中一段时间,一般保留时间为900s,也可以对保留时间进行调整。该参数受undo_retention管理,如将回退时间设置为1800s的语句为:alter system set undo_retention=1800;

注意:undo_retention是oracle的一个软设计,当undo表空间不够用时,新的回退信息将会将未达1800s的回退信息覆盖。为了保证长时间的查询的读一致性以及各种闪回操作,可以通过启用undo表空间的retention guarantee特性,保证只有过期的数据才会被覆盖。启用retention guarantee的sql语句为:alter tablespace undo表空间名 retention guarantee;

如下操作为恢复sms_send_log表由于where条件错误被误删的数据。

1、被删除的数据

detele from tk_bm.sms_send_log where create_date < to_date('2021-10-11 13:50:09','yyyy-MM-dd hh24:mi:ss')  ;

2、查询被删除的数据,发现还在,查询语句为:

select * from sms_send_log as of timestamp to_timestamp('2021-10-11 13:50:09','yyyy-MM-dd hh24:mi:ss') ;

3、建立临时表,存放已删除的数据

create table sms_send_log_bak as select * from tk_bm.sms_send_log as of timestamp to_timestamp('2021-10-11 13:50:09','yyyy-MM-dd hh24:mi:ss') ;

4、开启行移动

alter table sms_send_log enable row movement;

5、执行数据恢复

flashback table sms_send_log to timestamp to_timestamp('2021-10-11 13:50:09','yyyy-mm-dd hh24:mi:ss');

6、关闭行移动

alter table sms_send_log disable row movement;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号