1. 程式人生 > 其它 >Oracle資料庫恢復delete誤刪且已提交的資料

Oracle資料庫恢復delete誤刪且已提交的資料

技術標籤:oraclejava

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;

啊~~ 多麼痛的領悟!