2010-02-12 60 views
2

我不得不承認,我只是把生豬數據庫上的狗狗搞砸了。在SQL Developer中運行更新查詢時,我沒有意識到只有部分查詢被突出顯示。如果您對SQL Developer有任何經驗,這意味着SQL Developer將只執行查詢的子部分 - 在這種情況下顯然是「UPDATE <表> SET <列> = <值>」被突出顯示。 。在oracle中搞砸了桌子

這意味着查詢成爲 「UPDATE <表> SET <柱> = <值>」。是的,提交已被按下。

除備份還原之外,還有什麼方法可以檢索這些信息嗎?或者現在只是搞砸了嗎?

回答

9

在Oracle上,如果您的數據庫爲9i或更高版本,並且撤銷不太舊,那麼您擁有神奇的flashback query。喜歡的東西:

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

如果查詢返回ORA-01555 Snapshot Too Old就意味着你的數據庫配置的undo_retention值不爲恢復足夠高...

+0

你已經救了我的屁股。 – cwallenpoole 2010-02-12 22:43:21

+0

這很好;-) – FerranB 2010-02-13 00:42:34

+0

我的DBA同樣非常感謝你指出了這一點 - 他忘記了他已經設置了數據庫來做到這一點。 – cwallenpoole 2010-02-13 15:53:07

1

還原段是否爲數據庫創建?如果是這樣,你可以回滾你剛剛做的 - 如果它有足夠的空間。

+0

他已經犯了,所以回滾不會做任何事情。 – 2010-02-15 03:25:12

0

如果沒有隱含的事務提交開啓並且您仍然打開相同的連接,則可以回滾上次事務。如果不從備份還原是我能想到的唯一其他選項。