oracle資料庫中表不小心drop刪除怎麼辦
阿新 • • 發佈:2018-11-28
沒有刪過庫的程式設計師怎麼成長!!!
我手裡幾個專案搞得有點亂,前幾天就不小心刪掉了不該刪除的資料庫中的表。發現問題後一身冷汗啊。細思冷靜後發現我刪除掉的是:測試環境的庫,大不了在重新建立,然後就想補救的措施。
恢復思路:
oracle在10版後中都有回收站機制,而且都是預設開啟而且關閉麻煩(反正我沒關了),所以只要我們能把回收站中刪除的表找到恢復就好了。我是在pl/sql中操作的。
登入被刪表的資料庫,執行如下。
--可以查詢出回收站中刪除的表,original_name是原表名 select object_name,original_name,type,droptime fromuser_recyclebin;
在上面要是能查出來就恭喜你資料庫有回收站機制並在開啟狀態。
--可以恢復回收站的表,有同名的恢復最新刪除的。 flashback table 原表名 to before drop;
要是順利執行結束就可以看到你的表恢復了,有個弊端就是隻能一個個的恢復,有路過的大神指點怎麼批量恢復。
拓展一下其他sql語句,我自己回頭用。
--刪除表,進入到回收站 drop table ahic_sms_interface$_; --檢視是否開啟了回收站,on代表開啟了 SELECT NAME, VALUE FROMV$PARAMETER WHERE NAME='recyclebin'; --關閉資料庫回收站機制,初始的不讓改 ALTER SYSTEM SET RECYCLEBIN=OFF; --清空回收站 purge recyclebin;
據說回收站機制會導致資料庫檔案過大,最後不得不情況回收站之類的,我這裡個還沒研究明白。
本文是參考其他部落格寫的,前幾天看的就關了,在這裡表示感謝。