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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |