(2010-09-12)Oracle中,一个Delete操作的流程
2010-09-12 23:30
302 查看
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)。
删除(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)。
相关文章推荐
- Oracle中,一个Delete操作的流程
- Oracle中,一个Delete操作的流程
- Oracle中Delete操作的流程
- Oracle 学习笔记 图解深入剖析一个事务的操作流程
- Oracle中Delete和Commit操作的流程分析
- ORACLE中一个UPDATE的操作流程
- oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
- oracle常见为题汇总,以及一个简单数据连接操作工厂
- Oracle 大规模 delete,update 操作 注意事项
- ORACLE 11g RAC测试环境GI和DB打 PSU操作流程
- Oracle 大规模 delete,update 操作 注意事项
- 一个C#操作Oracle的通用类
- 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例
- oracle一个事务的完整流程分析
- oracle与sql server2000中不在同一个服务器上的数据库数据操作的方法对比
- 一个oracle事务的完整执行流程
- 从oracle官网下载JavaMail所需jar的操作流程
- Oracle 大规模 delete,update 操作 注意事项
- oracle一个事务的完整流程
- 在一个修改了数据的事务被提交之前,Oracle进行了以下操作