在Oracle中还原被截断的表数据

在Oracle中还原被截断的表数据,oracle,Oracle,我不熟悉Oracle Advance概念,在我的应用程序中,我意外地“截断”了数据。我面临着困难 还原被截断的数据。我在谷歌上搜索了很多,发现oracle 10g中有“闪回”命令。我在倒叙中使用时间戳方法进行了尝试 但我得到了以下错误: 错误:表定义已更改。 有人能告诉我如何取回被截断的表数据吗 可能吗?如果是,请告诉我取回数据的步骤。错误信息非常清楚。如果对表进行DDL操作(添加或删除列、添加或删除约束等),则FLASHBACK不可用。它就在文档的第一段中。正如Tim所建议的那样,这正是备份数

我不熟悉Oracle Advance概念,在我的应用程序中,我意外地“截断”了数据。我面临着困难 还原被截断的数据。我在谷歌上搜索了很多,发现oracle 10g中有“闪回”命令。我在倒叙中使用时间戳方法进行了尝试 但我得到了以下错误:

错误:表定义已更改。

有人能告诉我如何取回被截断的表数据吗


可能吗?如果是,请告诉我取回数据的步骤。

错误信息非常清楚。如果对表进行DDL操作(添加或删除列、添加或删除约束等),则FLASHBACK不可用。它就在文档的第一段中。正如Tim所建议的那样,这正是备份数据会有所帮助的地方


编辑:非常准确地说,Oracle文档中的措辞是(我强调):Oracle数据库无法通过任何更改表结构的DDL操作将表恢复到早期状态。因此,添加或删除列将防止使用闪回,因为它们会更改表的结构。TRUNCATE不会,因此TRUNCATE本身并不能防止闪回(尽管TRUNCATE是一种DDL操作)。我在第一段中被“添加或删除约束”迷住了——我实际上不知道这是否能防止倒叙;你可以通过实验来找到答案。

为了将来的参考,我建议定期备份数据库。在这种情况下,您最多可能会丢失上次备份后的新数据。@TimBiegeleisen,谢谢。因此,如果没有备份,就不可能恢复数据。对吗?通过@mathguy查看答案你可以尝试这个选项。您好@mathguy,如果我正确理解了您共享的文档。“TO BEFORE DROP子句”可以使用FLASHBACK完成,但它也是一个DDL命令。如果我错了,请告诉我好吗?@M.S.Naidu-我进一步澄清了我的答案-见上文。