Oracle數據表被drop后的恢復
對于被drop的表和索引,都會存放在回收站中(所以對于生產的數據庫必須設置好回收站功能)
因為本次生成環境在drop掉已有的表后,重新創建了許多的表,所有直接還原的話會提示原有對象存在,表名重復。其中解決方法是:先重命名已經存在的表名,讓后還原刪除的表,最后進行數據合并
1 重命名已經存在的表
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(*)大于0 的數據需要進行數據的合并,否則可以不用管它
2 使用還原數據庫的命令進行數據還原
spool bak2.txt
select ' flashback table '||t.original_name|| ' to before drop' from user_recyclebin t;
spool off
執行這個bak2.txt中保存的腳本,可以進行數據的還原
3 進行數據庫中表數據的合并()
需要注意的有的數據是直接insert to 就可以,但是有的本來是計時器的功能,只需要對數量進行累加就可以,還有的數據時因為沒有重建了一份一樣的數據,對于這樣的數據就不需要管他
4 重建索引
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!