Oracle資料回滾

2021-10-25 09:56:38 字數 2094 閱讀 8403

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 table 表名;
select 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;
select *

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

minus

select *

from 表名;

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

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

merge into 表名 a

using (select *

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 then

insert

values

(b.id,

b.col);

select *

from 表名

minus

select *

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

其中將恢復 表至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);

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

oracle資料回滾

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

Oracle資料回滾

1 select from 表名 as oftimestamp to timestamp 2019 04 15 22 00 38 yyyy mm dd hh24 mi ss 1 select 2 from 表名 as oftimestamp to timestamp 2019 04 16 21 43...

Oracle資料回滾

今天差一點刪庫跑路 還好有乙個回滾 嚇死 1.查詢某個時間點的資料 select from table as of timestamp to timestamp 2019 12 24 00 00 00 yyyy mm dd hh24 mi ss 2.開啟資料閃回 alter table table ...