oracle误删除表或者表数据的恢复方法总结

--一、误删除表的恢复方法
--查询这个“回收站”或者查询user_table视图来查找已被删除的表:
select table_name,dropped from user_tables
select object_name,original_name,type,droptime from user_recyclebin
--如果还能记住表名,则可以用下面语句直接恢复:
 flashback table xq1 to before drop
-- 如果记不住了,也可以直接使用回收站的表名进行恢复,然后再重命名,参照以下语句:
  flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名
--oracle的闪回功能除了以上基本功能外,还可以闪回整个数据库:
--使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:
SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp('2017-08-03 12:00:00','yyyy-mm-dd hh24:mi:ss');
 
 --二、误删除表数据恢复方法
 delete from xq1
 --方法一:
 --1.1获得当前数据库的scn号,如果权限不够,切换到sys或者sysdba
 select current_scn from v$database;
 select * from xq1 as of scn 2229400;
 --1.2开启行移动功能
 alter table xq1 enable row movement
 --1.3恢复删除且已提交的数据
 flashback table xq1 to scn 2229400  
  --1.4关闭行移动功能 ( 千万别忘记 )
 alter table xq1 disable row movement
-- 方法2:
 --误删除数据
 delete from xq1
--2.1查询当前系统时间
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--2.2查询删除数据的时间点的数据
select * from xq1 as of timestamp to_timestamp('2017-08-03 15:41:00','yyyy-mm-dd hh24:mi:ss');  --(如果不是,则继续缩小范围)
--2.3恢复删除且已提交的数据
flashback table xq1 to timestamp to_timestamp('2017-08-03 15:41:00','yyyy-mm-dd hh24:mi:ss');
--如果出现ORA-08189: 因为未启用行移动功能, 不能闪回表
 --2.4开启行移动功能
 alter table xq1 enable row movement;--再执行2.3,执行完成记得关闭
  --2.5关闭行移动功能 ( 千万别忘记 )
 alter table xq1 disable row movement





  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值