【发布时间】:2013-10-08 03:52:15
【问题描述】:
我不小心掉落了一张相当大的桌子——回收站未启用。我相当确定数据仍然存在于 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
知道如何克服这个错误吗?从我所做的所有搜索来看,它似乎认为该表在结构上与删除时不同。
【问题讨论】:
-
嗯,我没有回滚,因为我认为删除表实际上无法通过回滚来撤消。我以为只有像插入和更新这样的 DML 操作可以回滚?
-
FLASHBACK TABLE 在使用闪回时间戳功能时不需要回收站。如果你正在使用它,它会检查 UNDO 表空间,据我所知(我可能是错的)。
-
如果未启用回收站,并且您通过在
show parameter recyclebin的结果中的value列中看到off来确认它,那么真的没有简单的方法来恢复表而不对数据库或 talespace 进行时间点恢复。您也可以尝试使用LogMiner来恢复和恢复已删除的表,但这可能需要更多时间。
标签: sql oracle undo flashback sql-drop