Oracle數據表被drop后的恢復

jopen 9年前發布 | 10K 次閱讀 Oracle 數據庫服務器

對于被drop的表和索引,都會存放在回收站中(所以對于生產的數據庫必須設置好回收站功能)

 

因為本次生成環境在drop掉已有的表后,重新創建了許多的表,所有直接還原的話會提示原有對象存在,表名重復。其中解決方法是:先重命名已經存在的表名,讓后還原刪除的表,最后進行數據合并

 

重命名已經存在的表

 

spool bak.txt

select 'alter table '||t.original_name||' rename to '||t.original_name||'_bak;',' select count(*) from '||t.original_name||'_bak;' from user_recyclebin t;

spool off

 

那么會把修改表名的語句存放在bak.txt中,我們可以稍微調整一下直接運行這個腳本或者是拷貝的sqlplus中執行也可以

 

因為考慮到數據的合并,對于 count*)大于的數據需要進行數據的合并,否則可以不用管它

 

使用還原數據庫的命令進行數據還原

spool bak2.txt

select ' flashback table  '||t.original_name|| ' to before drop'  from user_recyclebin t;

spool off

 

執行這個bak2.txt中保存的腳本,可以進行數據的還原

 

 

進行數據庫中表數據的合并()

 

需要注意的有的數據是直接insert to 就可以,但是有的本來是計時器的功能,只需要對數量進行累加就可以,還有的數據時因為沒有重建了一份一樣的數據,對于這樣的數據就不需要管他

 

重建索引

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!