Oracle中,一个Delete操作的流程
2012-05-31 10:48
288 查看
Oracle中,一个Delete操作的流程
删除(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)。
链接:http://www.eygle.com/archives/2005/01/oracleoeooedele.html
删除(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)。
链接:http://www.eygle.com/archives/2005/01/oracleoeooedele.html
相关文章推荐
- Oracle中,一个Delete操作的流程
- (2010-09-12)Oracle中,一个Delete操作的流程
- Oracle中Delete操作的流程
- Oracle 学习笔记 图解深入剖析一个事务的操作流程
- Oracle中Delete和Commit操作的流程分析
- oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
- ORACLE中一个UPDATE的操作流程
- 剖析一个事物的操作流程(undo的作用)
- Oracle中对一个表中的数据和输入的参数对比,做出对应的操作(存储过程)
- 第二十五讲--图解深入剖析一个事务的操作流程
- oracle常见为题汇总,以及一个简单数据连接操作工厂
- 关于如何自定义一个 文本输入框(UITextView) 的思想以及整个操作流程
- Oracle 大规模 delete,update 操作 注意事项
- 实用开发之-oracle表回滚到一个指定时间的操作语句
- 一个C#操作Oracle的通用类
- NavicatforOracle连接Oracle11G操作流程
- 一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、Access、SQLITE
- Navicat for Oracle 连接 Oracle 11G 操作流程
- Oracle 大规模 delete,update 操作 注意事项
- 用keil2软件关闭,新建,打开一个工程的操作流程