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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Oracle相关文章