參考:oracle誤刪表內資料,如何恢復
/*1.flashback query*/
/*這裡只是查出被刪之前的資料,如果要恢復,則把查詢出來的資料匯出為sql,然後找到原表,重新匯入資料即可*/
--閃回到15分鐘前
select
*from orders as
oftimestamp
(systimestamp -
interval
'15'
minute
)where..
....
--這裡可以使用day、second、month替換minute,例如:
select
*from orders as
oftimestamp
(systimestamp -
interval
'2'day
)--閃回到某個時間點
select
*from orders as
oftimestamp to_timestamp (
'01-sep-04 16:18:57.845993'
,'dd-mon-rr hh24:mi:ss.ff'
)where..
.--閃回到兩天前
select
*from orders as
oftimestamp
(sysdate -2)
where..
....
.../*2.flashback drop*/
1.flashback table orders to before drop
;--2.如果源表已經重建,可以使用rename to子句:
flashback table
order
to before drop
rename
to order_old_version;
/*3.flashback table*/
--1.首先要啟用行遷移:
alter
table
order
enable
row movement;
--2.閃回表到15分鐘前:
flashback table
order
totimestamp systimestamp -
interval
'15'
minute
;--閃回到某個時間點:
flashback table
order
totimestamp to_timestamp(
'2007-09-12 01:15:25 pm'
,'yyyy-mm-dd hh:mi:ss am'
)
select province_dept_name,province_dept_id,province_duty_id,province_duty_name
from t_table_name as of timestamp sysdate-80/1440
where project_cd=『b19302327125000』
參考:select * from wl_notify_task as of timestamp sysdate – 3/1440
對sql的解釋說明:
sysdate :當前時間
1440 :24h*60m=1440m
3:3分鐘前
通過上面的查詢,我們看到了在update之前的資料情況。那麼把資料恢復回去就很簡單了,通過id關聯的方式更新回去即可。如下:
update wl_notify_task t1
set t1.parameter =
(select parameter
from wl_notify_task as of timestamp sysdate – 3 / 1440
where t1.id = id)
這種做法也是dba常用的恢復資料的手段。對於刪除的情況,那麼就通過insert辦法重新把記錄插入表即可。
最後需要特別提醒大家注意的是,sql中的 sysdate-3/1440 代表查詢3分鐘前的記錄情況,由於是和當前時間sysdate的距離3分鐘前,所以這個隨著隔的時間不同及時間的推移是會變化的,一般的做法是在真正做恢復時的update前,需要先select查詢一下比如3分鐘前的資料是否是我們想要的資料,確認無誤後立即做恢復的update。如果資料不是我們想要的,那麼就需要通過調節分鐘數直到找到我們想要的資料。這種辦法適合小批量資料,如果是大批量資料且很重要的資料的話,建議大家新建一張結構相同的表,先把as of timestamp查詢出來的資料存到新錶中,再進行恢復操作,因為這樣資料不再受時間差的影響,確保資料是準確的,無論你何時開始做恢復操作。
oracle恢復被drop掉的表
以前只知道windows有個 站,今天聽說oracle也有個 站!在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀!不過還好oracle有個 站,概念就跟windows裡的 站一模...
在Oracle中恢復被DROP掉的表
在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀 以前只知道windows有個 站,今天聽說oracle也有個 站 不過還好oracle有個 站,概念就跟windows裡的 站一模...
在Oracle中恢復被DROP掉的表
在oracle中可能不小心會drop掉乙個表,如果沒有定期做備份的話,將會帶來很大的麻煩。如果有的情況下,每天的資料都很重要,而定期備份的週期又稍長,情況恐怕也不容樂觀 以前只知道windows有個 站,今天聽說oracle也有個 站 不過還好oracle有個 站,概念就跟windows裡的 站一模...