日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

oracle中commit之后進行數據回滾的方法_oracle

作者:藍澀街燈 ? 更新時間: 2022-03-21 編程語言

commit之后

第一種:

記住大概的時間,獲取前大概時間的數據。

select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh24:mi:ss');

上面的代碼就可以查看你要恢復的時間點的記錄,看看是不是有你想要的剛剛提交的DML相關記錄。

能看到,剩下的就簡單了,可以把現在表中的數據備份到一個臨時表,然后把記錄插進去原表就行了

不要用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版本的時候引入了閃回技術,在Oracle 10g已經全面提供了閃回功能,主要提供了快速簡單恢復數據庫誤操作的數據的恢復方法,而不用從邏輯備份或物理備份中恢復過來。

如果多次commit數據后,那可不可以閃回呢?貌似不可以。閃回只能暫存最近一次的數據操作。
閃回執行步驟: 

  1.查詢最近更新數據之前的數據(以便確定是不是Commit之前的數據)

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'表示上次更新數據前的時間,

  2.閃回操作前啟用行移動功能(不啟用不可以閃回)

alter table Test enable row movement;

  其中Test表示被誤操作的表 

  3.執行閃回語句:

flashback table Test to timestamp TO_TIMESTAMP('20211208 15:10:00','YYYYMMDD HH24:MI:SS');

  這樣被誤操作的數據就可以“找”回來了。哈哈~

注:方法來源于網絡整理,請謹慎操作?。。⌒薷臄祿梆B成好習慣,手動備份下數據!

原文鏈接:https://www.cnblogs.com/since-1995/p/15660187.html

欄目分類
最近更新