flashback有条件的解决用户误删数据

来源:互联网 发布:java多线程实现同步 编辑:程序博客网 时间:2024/05/16 07:15

一、如果是刚刚删除,还在undo保留策略所设置的时间里面。
首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。
显示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800单位是秒。即3个小时。
修改默认的undo_retention参数设置:
ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
方法1,通过oracle提供的回闪功能:
exec dbms_flashback.enable_at_time(to_date(’2007-07-23 10:21:00’,’yyyy-mm-dd hh24:mi:ss’));
set serveroutput on
DECLARE r_temp hr.job_history%ROWTYPE;
CURSOR c_temp IS SELECT * FROM hr.job_history;
BEGIN
OPEN c_temp;
dbms_flashback.disable;
LOOP
FETCH c_temp INTO r_temp;
EXIT WHEN c_temp%NOTFOUND;
insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END LOOP;
CLOSE c_temp;
END;

方法2,insert into hr.job_history

select * from hr.job_history as of timestamp to_timestamp(’2017-10-23 10:20:00’, ‘yyyy-mm-dd hh24:mi:ss’);
create table tableName_bak as
select * from tableName as of TIMESTAMP to_timestamp(’20171126 103435’,’yyyymmdd hh24miss’);

这种方法简单,容易掌握,功能和上面的一样时间为你误操作之前的时间,最好是离误操作比较近的,因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。
二、如果是删除一段时间了,但你有比较新的数据库备份,就通过备份来恢复。新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去,这个方法时间长,但也能恢复。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中韩关系现状 中韩岛屿之争 中韩自贸协定内容 中韩演唱会exo 诲尔洗衣机 滚筒洗衣机推荐 达米尼洗衣机 家用全自动洗衣机 中顺洁柔 中顺易 中顺棋牌qka 中顺汽车 中顺 中顺洁柔股吧 002511中顺洁柔 中顺洁柔股票 资中顺通酒店 中顺洁柔重组 中顺洁柔纸业股份有限公司 中顺洁柔招聘信息 长春中顺南苑 南县中顺大酒店 中频理疗仪 中频 中频理疗 中频电疗法 中频脉冲 2吨中频炉 中频感应炉型号 中频无芯感应炉 中频电炉厂家 中频炼钢炉 中频炉生产商 中频感应加热炉 电脑中频 中频熔铝炉 熔铜中频炉 中频炉维修 1吨中频电炉价格 钢壳中频炉 中频炉感应圈