Oracle資料庫恢復delete誤刪且已提交的資料
阿新 • • 發佈:2021-01-01
SQL語句測試時,不小心把表中資料全刪除了怎麼辦?
不要慌,不要急,不聲不響的恢復就可以了
首先看一下下面的SQL截圖,這是我的操作
恢復資料的方式有很多種,這裡列出兩種,我採用的是第一種
第一種:通過時間恢復刪除且已提交的資料
查詢當前系統時間
select to_char (sysdate,'yyy-mm-dd hh24:mi:ss') from dual;
1.首先開啟行移動功能(不開啟的話,恢復資料的時候可能會報錯)
alter table table_name enable row movement;
2.查詢刪除資料的時間點的資料(確定一下已刪除的資料是否存在,不存在的話把時間往前推,再試試)
select * from table_name as times
3.恢復刪除且已提交的資料
flashback table table_name to timestamp to_timestamp('2020-12-23 14:58:09','yyyy-mm-dd hh24:mi:ss');
4.關閉行移動功能(一定要記得關閉此功能)
alter table table_name disable row movement;
第二種:通過scn恢復刪除且已提交的資料
1.獲得當前資料庫的scn號(切換到sys使用者或system使用者查詢)
select current_scn from v$database ;
2.查詢當前scn號之前的scn(確定刪除的資料是否存在,如果存在,則恢復資料,如果不存在,則繼續縮小scn號)
select * from table_name as of scn 1499220;
3.恢復刪除且已提交的資料
flashback table table_name to scn 1499220;
啊~~ 多麼痛的領悟!