1. 程式人生 > >oracle資料庫中表不小心drop刪除怎麼辦

oracle資料庫中表不小心drop刪除怎麼辦

沒有刪過庫的程式設計師怎麼成長!!!

 

我手裡幾個專案搞得有點亂,前幾天就不小心刪掉了不該刪除的資料庫中的表。發現問題後一身冷汗啊。細思冷靜後發現我刪除掉的是:測試環境的庫,大不了在重新建立,然後就想補救的措施。

 

恢復思路:

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;

 

據說回收站機制會導致資料庫檔案過大,最後不得不情況回收站之類的,我這裡個還沒研究明白。

本文是參考其他部落格寫的,前幾天看的就關了,在這裡表示感謝。