Oracle資料回滾的全過程

2022-09-21 01:03:09 字數 2118 閱讀 4192

前言

最近在修復乙個比較老的專案報表的bug的時候,因為對該專案不太熟悉,導致生產環境資料修改有誤,於是求助導師幫忙回滾資料,現學習一下oralce資料回滾以備不時之需。

檢視某個時間點的表的資料

select * from 表名  as of timestamp to_timestamp('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');

開啟閃回,如果不開啟無法進行閃回

alter table 表名 enable row movement;

關閉閃回,回滾資料之後需要進行關閉

alter table 表名 disable row movement;

閃回表資料到某個時間點

flashback table 表名 to timestamp to_timestamp('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');

drop表

drop table 表名;

查詢資料庫**站記錄

selwww.cppcns.comect object_name,original_name, type from user_recyclebin;

查詢被刪除的表物件

上面的object_name便是這裡被刪除的表在資料庫**站中的臨時表名bin$djh3j69wqfgwda1d76/9na==$0

select * from "bin$djh3j69wqfgwda1d76/9na==$0";

閃回恢復被刪除的表物件

flashback table 表名 to before drop;

檢視 delete 及 update 操作修改的資料

select *

from 表名 as of timestamp  to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss')

minus

select *

from 表名;

恢復 delete 及 update 操作修改的資料

將恢復 表至 2019-04-16 21:43:38 時點,恢復資料為因 delete 及 update 操作修改的資料。

注意:需要通過唯一條件id 定位資料。

merge into 表名 a

using (select *

arwko;      from 表名 as of timestamp to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss')

minus

select *

from 表名) b

on (a.id = b.id)

when matched then

update

set a.col = b.col,

when not matched th

insert

values

(b.id,

arwko  b.col);

檢視 insert 操作修改的資料

select *

from 表名

minus

select *

from 表名 as of timestamp  to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss');

恢復 insert 操作修改的資料

其中將恢復 表至 2019-04-16 21:45:38 時點,恢復資料為因 insert 操作修改的資料。

注意:需要通過唯一條件 unique_id 定位資料。

delete from 表名 a

where exists (select 1

from (select *

from 表名

minus

select *

from 表名 as of timestamp to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss')) b

where a.id = b.id);

如果相隔時間過長的話,資料就回滾不了了,所以一旦資料出現問題,就要立即進行處理。

參考部落格

ABP適配Oracle全過程

abp的各類文件在網路上已經非常完善了,唯獨缺少與oralce相關的資料,abp官網也未給出乙個較好的oracle解決方案。正好最近在學習abp相關知識,對abp原始碼結構稍算熟悉,花了些時間進行abp適配oracle。前期工作都準備好後,開搞開搞!分別在web和entityframework新增o...

oracle資料回滾

當我們修改了表的資料並且提交了事務後,想回滾資料怎麼辦?先根據sql執行歷史確定資料回滾時間點 select sql text,last load time from v sql where sql text like update order by last load time desc 再將資料...

Oracle資料回滾

select from 表名 as of timestamp to timestamp 2019 04 15 22 00 38 yyyy mm dd hh24 mi ss alter table 表名 enable row movement alter table 表名 disable row mo...