删除表后,可以采用如下操作:
目前成都创新互联已为成百上千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、南澳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在user_recyclebin中找到最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
FLASHBACKTABLETABLE_NAMETOBEFOREDROP;
如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
CREATETABLEQUICK_TABLEAS
SELECT*FROMTABLE_NAMEASOFTIMESTAMPSYSDATE-1/24(一小时前的),减去的时间可以自己定如:select*fromTABLE_NAMEASOFTIMESTAMP(SYSTIMESTAMP-INTERVAL'1'MINUTE)
如果仅仅是
数据行被删除了,那么可以用得方法很多
例如logmnr
flashback
query
等等
如果是表被删除了,那么如果开了recylebin
可以用回收站,
也可以使用专业oracle数据恢复工具prm
for
oracle
如果自己搞不定可以找askmaclean专业oracle数据库修复团队成员帮您恢复!
askmaclean.com
误删数据(delete)的话,可以在undo空间找到最近的数据(根oracle设置的undo大小有关)一般刚删除的还是有机会找到的,自己根据SQL修改时间饥渴
SELECT *
FROM 表名 AS OF TIMESTAMP to_date('2018-07-19 08:01', 'yyyy-mm-dd HH24:mi')
WHERE 可以带条件;
如果是误删表(drop)的话。需要在回收站是否启用,查看回收站中表
select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;
flashback table 表名 to before drop;
--或
flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;
中间这一串BIN…… 是在回收站表中找到对应的名字
oracle如何恢复误删的表记录数据,解决办法:
从flash back里查询被删除的表select * from recyclebin
执行表的恢复flashback table tbName to before drop;这里的tbName代表你要恢复的表的名称。
先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。
一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名称,time指某个时间点。
这个命令的作用是,允许Oracle 修改分配给行的rowid。
在Oracle 中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。
闪回表处理会对EMP 完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。
要支持闪回就必须允许Oracle 执行这个操作。