oracle中commit之后進(jìn)行數(shù)據(jù)回滾的方法
commit之后
第一種:
記住大概的時間,獲取前大概時間的數(shù)據(jù)。
select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh24:mi:ss');
上面的代碼就可以查看你要恢復(fù)的時間點的記錄,看看是不是有你想要的剛剛提交的DML相關(guān)記錄。
能看到,剩下的就簡單了,可以把現(xiàn)在表中的數(shù)據(jù)備份到一個臨時表,然后把記錄插進(jìn)去原表就行了
不要用truncate刪除,不然你就回不去了,到時候你就又要哭了。
delete from Test; insert into Test select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh24:mi:ss'); commit;
第二種:
Oracle在9i版本的時候引入了閃回技術(shù),在Oracle 10g已經(jīng)全面提供了閃回功能,主要提供了快速簡單恢復(fù)數(shù)據(jù)庫誤操作的數(shù)據(jù)的恢復(fù)方法,而不用從邏輯備份或物理備份中恢復(fù)過來。
如果多次commit數(shù)據(jù)后,那可不可以閃回呢?貌似不可以。閃回只能暫存最近一次的數(shù)據(jù)操作。
閃回執(zhí)行步驟:
1.查詢最近更新數(shù)據(jù)之前的數(shù)據(jù)(以便確定是不是Commit之前的數(shù)據(jù))
select * from Test as of timestamp to_timestamp('2021-12-08 08:00:00', 'yyyy-mm-dd hh24:mi:ss');
其中Test為被誤操作的表,'2021-12-08 08:00:00'表示上次更新數(shù)據(jù)前的時間,
2.閃回操作前啟用行移動功能(不啟用不可以閃回)
alter table Test enable row movement;
其中Test表示被誤操作的表
3.執(zhí)行閃回語句:
flashback table Test to timestamp TO_TIMESTAMP('20211208 15:10:00','YYYYMMDD HH24:MI:SS');
這樣被誤操作的數(shù)據(jù)就可以“找”回來了。哈哈~
注:方法來源于網(wǎng)絡(luò)整理,請謹(jǐn)慎操作!?。⌒薷臄?shù)據(jù)前養(yǎng)成好習(xí)慣,手動備份下數(shù)據(jù)!
到此這篇關(guān)于oracle中commit之后如何進(jìn)行回滾的文章就介紹到這了,更多相關(guān)oracle中commit之后如何進(jìn)行回滾內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。