利用闪回功能恢复删除(drop,delete)的数据和表及数据,update之后数据恢复

编程入门 行业动态 更新时间:2024-10-26 14:30:35
一、drop表
从 flashback table 里查询被删除的数据
1、select * from recyclebin order by droptime desc
2、执行表的恢复

flashback table '需要恢复的表名' to before drop


二、delete表中数据
1、先从 flashback_transaction_query 视图里查询,视图提供了供查询用的表名称、事务提交时间、undo_sql等字段。
select * from flashback_transaction_query where table_name='需要恢复数据的表名(大写)';
2、查询删除的时间点
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time,
       to_char(dbms_flashback.get_system_change_number) scn
  from dual;
3、记得删除点,你也可以这样试试查询,找出删除前的时间点
select * from '需要恢复数据的表名' as of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss');
4、进行数据恢复
   通过第二步找到数据丢失的时间点,恢复极为简单,语句为
flashback table '需要恢复数据的表名' to timestamp to_timestamp('数据丢失的前一时间点','yyyy-mm-dd hh24:mi:ss');
5、注意:在执行上述操作的时候,需要允许 oracle 修改分配给行的 rowid,这时候 oracle 需要给恢复的数据分配新的物理地址。
开启行移动:alter table table_name enable row movement;
6、其实找到数据丢失前的时间点后,恢复数据也可以将需要恢复的数据直接插入到目标表中
insert into '数据丢失的表' select * from t of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss') where .......;
恢复结束后也可以关闭行移动:

alter table table_name disable row movement;


三、update后恢复
1、在v$sqlarea 这视图里面找到你操作那条SQL的时间;
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc;
2、把数据恢复到一个新表
create table t_table_recove --新表
as
select * from t_table--你操作后要恢复的那张表 
as of timestamp to_timestamp('2010-06-02 11:36:53','yyyy-mm-dd hh24:mi:ss');
3、查看t_table_recove 的数据是否是update前的数据
如果是则导入原表,数据恢复成功

更多推荐

利用闪回功能恢复删除(drop,delete)的数据和表及数据,update之后数据恢复

本文发布于:2023-06-10 15:59:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/615013.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   数据恢复   功能   闪回   delete

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!