利用oracle闪回技术,将某个时间的数据给还原回来。
场景演示:a :select * from test_table;
b:update test_table set name = '张三'
说明:sql误操作将test_talbe表中的name全部都置成张三了,事务也提交了,需要回滚。
首先:查询提交事务之前时刻的数据。
select * from test_table as of timestamp to_timestamp('2019-02-26 09:39:40', 'yyyy-mm-dd hh24:mi:ss');
说明:test_table是误操作,需要闪回的表,2019-02-26 09:39:40这个时间点是误操作的那个时间点,在这个时间之前就是之前正确的数据,之后就是误操作后的数据
2.alter table test_table enable row movement;闪回操作前启用行移动功能
说明:test_table是误操作需要闪回的表
3.flashback table test_table to timestamp TO_TIMESTAMP('2019-02-26 09:39:40','YYYYMMDD HH24:MI:SS');
说明:test_table是误操作,需要闪回的表,2019-02-26 09:39:40时间点与步骤1的时间点相同。
完成!数据恢复。