1、 事务开始; 2、 在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中; 3、 事务修改buffer cache的数据块,该数据被标识为“脏数据”,并被写入log buffer中; 4、 事务提交,LGWR进程将log buffer中的“脏数据”写入redo log file中; 5、 当发生checkpoint,CKPT进程更新所有数据文件的文件头中的信息,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 定位数据。
如果相隔时间过长的话,数据就回滚不了了,所以一旦数据出现问题,就要立即进行处理。