[求助]用flashback恢复被删除的表

archwuke1 2010-06-25 03:43:44
单位系统里的表被人不小心删掉了几个
现在用
select * from user_RECYCLEBIN
可以列出被删除的表,而且字段can_undrop是yes

为什么用
flashback table 表名 to before drop 命令
总是提示ORA-38305:对象不在回收站中
还有,出来的object_name很长
类似:BIN$idLd7DR3UWjgQ5aWAQFRaA==$0
select * from "BIN$idLd7DR3UWjgQ5aWAQFRaA==$0"也提示没有表存在
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
archwuke1 2010-06-30
  • 打赏
  • 举报
回复
谢谢各位的回贴.
心中的彩虹 2010-06-25
  • 打赏
  • 举报
回复

--也可以这样
23:42:02 SQL> drop table xs;

表已删除。

23:42:11 SQL> select * from xs;
select * from xs
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


23:42:44 SQL> flashback table xs to before drop;

闪回完成。

23:43:08 SQL> select * from xs where rownum<=3;

XH XM ZYM XB CSSJ ZXF
------ -------- ---------- -- -------------- ----------
BZ
----------------------------------------------------------------
061101 王林 计算机 男 10-2月 -86 50


061102 程明 计算机 男 01-2月 -87 50


061103 王燕 计算机 女 06-10月-85 50



心中的彩虹 2010-06-25
  • 打赏
  • 举报
回复

--flashback table tbname to timestamp to_timestamp('时间','yyyy-mm-dd hh24:mi:ss')
--这个时间必须是你删除此表的时间前面';
--还要把你的表enable row movement

23:18:50 SQL>
已写入 file afiedt

1* select * from xs where to_char(trunc(cssj,'yy'),'yyyy')='1984'
23:19:31 SQL> /

XH XM ZYM XB CSSJ ZXF
------ -------- ---------- -- -------------- ----------
BZ
--------------------------------------------------------------------------------
061109 张强民 计算机 男 11-8月 -84 50


061201 王敏 通信工程 男 10-1月 -84 42


061204 马琳琳 通信工程 女 10-2月 -84 42



XH XM ZYM XB CSSJ ZXF
------ -------- ---------- -- -------------- ----------
BZ
--------------------------------------------------------------------------------
061216 孙祥欣 通信工程 女 09-3月 -84 42



23:19:32 SQL> delete from xs where to_char(trunc(cssj,'yy'),'yyyy')='1984';

已删除4行。

23:20:07 SQL> commit;

提交完成。

23:20:10 SQL> alter table xs enable row movement;

表已更改。

23:22:16 SQL> flashback table xs to timestamp
23:23:25 2 to_timestamp('2010-06-25 23:20:05','yyyy-mm-dd hh24:mi:ss');

闪回完成。

23:26:19 SQL> select * from xs where to_char(trunc(cssj,'yy'),'yyyy')='1984';

XH XM ZYM XB CSSJ ZXF
------ -------- ---------- -- -------------- ----------
BZ
--------------------------------------------------------------------------------
061109 张强民 计算机 男 11-8月 -84 50


061201 王敏 通信工程 男 10-1月 -84 42


061204 马琳琳 通信工程 女 10-2月 -84 42



XH XM ZYM XB CSSJ ZXF
------ -------- ---------- -- -------------- ----------
BZ
--------------------------------------------------------------------------------
061216 孙祥欣 通信工程 女 09-3月 -84 42



搞怪的索引 2010-06-25
  • 打赏
  • 举报
回复
3楼的观点正确!用你删除前表名,而不是在回收站里看到的表名!
Dave 2010-06-25
  • 打赏
  • 举报
回复

楼主用这条语句看看,可有结果。
select original_name,object_name from recyclebin;

必须要对象在回收站里才能进行恢复。 在删除时,如果指定purge 参数,表将直接删除,不会写到recyclebin中。此时是恢复不了的。

还有一点, 就是Flashback 不支持 sys 和system 用户。 即这2个用户下的对象是无法通过flashback 进行恢复的。


Oracle Flashback 技术 总结
http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspx



------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
etsilence 2010-06-25
  • 打赏
  • 举报
回复
你用flashback命令的时候,表名不能使用回收站的名字,应该用表被删除的时候的名字。回收站的表名是无法直接使用的。
archwuke1 2010-06-25
  • 打赏
  • 举报
回复
这个不会输错啊,都是复制粘贴的
ngx20080110 2010-06-25
  • 打赏
  • 举报
回复
如果BIN$idLd7DR3UWjgQ5aWAQFRaA==$0没输入错的话,确实没遇过。
帮顶了

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧