對於被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_recyclebint;
spool off
那麼會把改動表名的語句存放在bak.txt
中,我們能夠略微調整一下直接執行這個指令碼或者是拷貝的
sqlplus
中執行也能夠
由於考慮到資料的合併,對於 count(*
)大於0
的資料須要進行資料的合併,否則能夠不用管它
2 使用還原資料庫的命令進行資料還原
spool bak2.txt
select
' flashback table '
||t.original_name
|| ' to before drop'
from
user_recyclebint;
spool off
執行這個bak2.txt
中儲存的指令碼,能夠進行資料的還原
3 進行資料庫中表資料的合併()
須要注意的有的資料是直接insert to
就能夠,可是有的本來是計時器的功能,僅僅須要對數量進行累加就能夠,還有的資料時由於沒有重建了乙份一樣的資料,對於這種資料就不須要管他
4 重建索引
oracle恢復被drop掉的表
以前只知道windows有個 站,今天聽說oracle也有個 站!在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀!不過還好oracle有個 站,概念就跟windows裡的 站一模...
在Oracle中恢復被DROP掉的表
在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀 以前只知道windows有個 站,今天聽說oracle也有個 站 不過還好oracle有個 站,概念就跟windows裡的 站一模...
在Oracle中恢復被DROP掉的表
在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀 以前只知道windows有個 站,今天聽說oracle也有個 站 不過還好oracle有個 站,概念就跟windows裡的 站一模...