我在Oracle中删除了一个表,如何从undo表空间中检索它?

时间:2013-10-01 20:40:14

标签: sql oracle undo flashback sql-drop

我不小心掉了一张相当大的桌子 - 没有启用回收站。我相当肯定数据仍然存在于UNDO表空间中,但我不知道如何解决它。我重新创建了表,就像它被丢弃之前一样 - 结构完全相同。但是,当我尝试闪回表时,我收到此错误:

flashback table tablex to timestamp (systimestamp - interval '120' minute);
Error: 01466
DBD::Oracle::db do failed: ORA-01466: unable to read data - table definition has changed

知道如何克服这个错误吗?从我所做的所有搜索中,似乎它认为该表在结构上与删除时的结构不同。

1 个答案:

答案 0 :(得分:2)

我认为您不应该自己重新创建表格 - 当您闪回时,Oracle会为您重新创建表格,我推荐以下文章:http://www.oracle-base.com/articles/10g/flashback-10g.php#flashback_table

示例:

CREATE TABLE flashback_table_test (
  id NUMBER CONSTRAINT pk_flashback_table_test PRIMARY KEY
);

DROP TABLE flashback_table_test;
FLASHBACK TABLE flashback_table_test TO BEFORE DROP;

我认为在手动重新创建表格时,您需要使用某个SCN号码将其闪回。