ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle误删除表数据后的的快速回复功能

oracle误删除表数据后的的快速回复功能

原创 Linux操作系统 作者:wwd_wang 时间:2009-05-20 16:28:46 0 删除 编辑

http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc79111c0c66e0bb2c3f405a8e90613c47f81641e0f0652267092ae3999b8e1adfecc5797b8a24607118d24005d36ef58d197bd565cd1abfa044a7e9a16cc4b9d3a3c82558dd23726df0f19c2e7603cb1fe76432f4d1ef5f142f07cb9e2711894e075e885536&p=9165f90c86cc42ab17be9b7f5b43&user=baidu

oracle删除表数据后的的快速回复功能
2007-07-31 13:22

一、undo_retention参数的查询、修改:

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;

二、oracle删除表数据后的的快速回复功能方法:

【方法一】:
通过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;
这种办法可以将删除的数据回复到对应的表中,首先要保证该用户有执行dbms_flashback包的权限

【方法二】:
insert into hr.job_history
select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12137615/viewspace-600564/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-08

  • 博文量
    236
  • 访问量
    195649