加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 14:38:01 所属栏目:百科 来源:网络整理
导读:--一、误删除表的恢复方法 --查询这个“回收站”或者查询user_table视图来查找已被删除的表: select table_name,dropped from user_tables select object_name,original_name,type,droptime from user_recyclebin --如果还能记住表名,则可以用下面语句直接
--一、误删除表的恢复方法
--查询这个“回收站”或者查询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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读