删除(DELETE) 1.Oracle读Block到Buffer Cache(如果该Block在Buffer中不存在) 2.在redo log buffer中记录delete操作的细节 3.在相应回滚段段头的事务表中创建一个undo条目 4.把将要删除的记录创建前镜像,存放到Undo Block中 5.在Buffer Cache中的相应数据块上删除记录,并且标记相应的数据块为Dirty 提交(COMMIT) 1.Oracle产生一个SCN 2.在回滚段事务表中标记该事务状态为commited 3.LGWR Flush Log Buffer到日志文件 3.如果此时数据块仍然在Buffer Cache中,那么SCN将被记录到Block Header上,这被称为快速提交(fast commit) 4. 如果dirty block已经被写回到磁盘,那么下一个访问这个block的进程将会自回滚段中获取该事务的状态,确认该事务被提交。然后这个进程获得提交SCN并写回 到Block Header上。这被称为延迟块清除(delayed block cleanout)。 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-11-6 03:08 , Processed in 0.531133 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.