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