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;

 

據說回收站機制會導致數據庫文件過大,最后不得不情況回收站之類的,我這里個還沒研究明白。

本文是參考其他博客寫的,前幾天看的就關了,在這里表示感謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM