0

我不小心掉了一张相当大的桌子——回收站没有启用。我相当确定数据仍然存在于 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

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

4

1 回答 1

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 编号将其闪回。

于 2013-10-01T20:52:19.557 回答