200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > oracle误删了表怎么恢复数据 oracle误删除表或者表数据的恢复方法总结

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

时间:2022-01-29 04:44:43

相关推荐

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('-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('-08-03 15:41:00','yyyy-mm-dd hh24:mi:ss'); --(如果不是,则继续缩小范围) --2.3恢复删除且已提交的数据 flashback table xq1 to timestamp to_timestamp('-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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。