Oracle数据库,详解Oracle数据回滚全过程

发布于 2021-04-29 07:36

1 事务开始;

2
 buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;

3
 事务修改buffer cache的数据块,该数据被标识为脏数据,并被写入log buffer中;

4
 事务提交,LGWR进程将log buffer中的脏数据写入redo log file中;

5
 当发生checkpointCKPT进程更新所有数据文件的文件头中的信息,DBWn进程则负责将Buffer Cache中的脏数据写入到数据文件中。最近在修复一个比较老的项目报表的bug的时候,因为对该项目不太熟悉,导致生产环境数据修改有误,查了资料做了回滚数据,现学习一下Oralce数据回滚以备不时之需。

查看某个时间点的表的数据

开启闪回,如果不开启无法进行闪回

关闭闪回,回滚数据之后需要进行关闭

闪回表数据到某个时间点

drop表

查询数据库回收站记录

查询被删除的表对象

上面的object_name便是这里被删除的表在数据库回收站中的临时表名

闪回恢复被删除的表对象

查看 DELETE 及 UPDATE 操作修改的数据

恢复 DELETE 及 UPDATE 操作修改的数据

将恢复 表至 2019年04月16日21点43分38秒时点,恢复数据为因 DELETE 及 UPDATE 操作修改的数据。

注意:需要通过唯一条件id 定位数据。

看 INSERT 操作修改的数据

恢复 INSERT 操作修改的数据

其中将恢复 表至 2019年04月16日21点45分38秒时点,恢复数据为因 INSERT 操作修改的数据。

注意:需要通过唯一条件 unique_id 定位数据。

如果相隔时间过长的话,数据就回滚不了了,所以一旦数据出现问题,就要立即进行处理。