2

我不得不承认,我只是在生产数据库上搞砸了。在 SQL Developer 中运行更新查询时,我没有意识到只有一部分查询被突出显示。如果您对 SQL Developer 有任何经验,这意味着 SQL Developer 将只执行查询的该子部分——在这种情况下,显然,“UPDATE <table> SET <column>=<value>”被突出显示。 .

这意味着查询变成了“UPDATE <table> SET <column>=<value>”。是的,提交已被按下。

除了从备份中恢复之外,还有什么办法可以检索到这些信息,还是现在就搞砸了?

4

3 回答 3

9

如果您的数据库是 9i 或更高版本并且您的撤消不是太旧,那么在 Oracle 上,您有神奇的闪回查询。就像是:

SELECT ...
FROM <table> 
AS OF TIMESTAMP TO_TIMESTAMP('12-FEB-2010 10.55.00.000000');

如果查询返回ORA-01555 Snapshot Too Old,则表示您的数据库配置的undo_retention值不够高,无法进行恢复...

于 2010-02-12T22:16:14.900 回答
1

是否为数据库创建了撤消段?如果是这样,你可以回滚你刚刚做的事情——如果里面有足够的空间。

于 2010-02-12T22:14:12.470 回答
0

如果您没有打开隐式事务提交并且您仍然打开相同的连接,您可以回滚您的最后一个事务。如果不从备份恢复是我能想到的唯一其他选择。

于 2010-02-12T22:17:23.803 回答