您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關oracle中commit之后該怎么進行數據回滾,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
commit之后
第一種:
記住大概的時間,獲取前大概時間的數據。
select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh34: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 hh34: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 hh34: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');
這樣被誤操作的數據就可以“找”回來了。哈哈~
注:方法來源于網絡整理,請謹慎操作!!!修改數據前養成好習慣,手動備份下數據!
關于oracle中commit之后該怎么進行數據回滾就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。