oracle update並commit誤操作後,利用閃回方法 flashback可以還原上個時間點的資料
阿新 • • 發佈:2019-01-01
今天在生產環境更新一個選單的URL時,用update更新資料,但是忘記加上where限定條件,將所有選單的URL都更新為同一個。一時間感覺我惹大事了,慌忙找了個以前的備份表將整個表替換掉。可是備份表與真是表之間存在一些差異,結果就只能一個一個查詢並修改了。
事後才淡定下來,Google了一下方法才知道當時自己是多麼的傻.......哎(提醒各位萬事別緊張,先Google)
oracle提供了一種閃回的方法,可以將某個時間的資料給還原回來
方法如下:
1.select * from table as of timestamp to_timestamp('2014-10-16 16:24:00', 'yyyy-mm-dd hh24:mi:ss');
說明:table是誤操作,需要閃回的表,2014-10-16 16:24:00 這個時間點是誤操作的那個時間點,是個大概的時間,不用精確,在這個時間之前就是之前正確的資料,之後就是誤操作後的資料
2.alter table table enable row movement;
閃回操作前啟用行移動功能
說明:table是誤操作,需要閃回的表
3.flashback table account to timestamp TO_TIMESTAMP('20140422 15:10:00','YYYYMMDD HH24:MI:SS');
說明:table是誤操作,需要閃回的表,20140422 15:10:00時間點與步驟1的時間點相同。