上一篇:SQL查询的分页思路 >>
undo与redo的运行机制
撤消与重做(undo and redo)
undo
回退段中的数据是以“回退条目”方式存储。
回退条目=块信息(在事务中发生改动的块的编号)+在事务提交前存储在块中的数据
在每一个回退段中oracle都为其维护一张“事务表”
在事务表中记录着与该回退段中所有回退条目相关的事务编号(事务SCN&回退条目)
redo
重做记录由一组“变更向量”组成。
每个变更变量中记录了事务对数据库中某个块所做的修改。
当用户提交一条commit语句时,LGWR进程会立刻将一条提交记录写入到重做日志文件中,然后再开始写入与该事务相关的重做信息。
#事务提交成功后,Oracle将为该事备生成一个系统变更码(SCN)。事务的SCN将同时记录在它的提交记录和重做记录中。
文章摘抄:
commit
提交事务前完成的工作:
·在SGA区的回退缓存中生成该事务的回退条目。在回退条目中保存有该事务所修改的数据的原始版本。
·在SGA区的重做日志缓存中生成该事务的重做记录。重做记录中记载了该事务对数据块所进行的修改,并且还记载了对回退段中的数据块所进行的修改。缓存中的重做记录有可能在事务提交之前就写入硬盘中。
·在SGA区的数据库缓丰中记录了事务对数据库所进行的修改。这些修改也有可能在事务提交之前就写入硬盘中。
提交事务时完成的工作:
·在为该事务指定的回退段中的内部事务表内记录下这个事务已经被提交,并且生成一个惟一的SCN记录在内部事务表中,用于惟一标识这个事务。
·LGWR后进进程将SGA区重做日志缓存中的重做记录写入联机重做日志文件。在写入重做日志的同时还将写入该事务的SCN。
·Oracle服务进程释放事务所使用的所有记录锁与表锁。
·Oracle通知用户事务提交完成。
·Oracle将该事务标记为已完成。
rollback
回退事务完成的工作:
·Oracle通过使用回退段中的回退条目,撤销事务中所有SQL语句对数据库所做的修改。
·Oracle服务进程释放事务所使用的所有锁
·Oracle通知事务回退成功。
·Oracle将该事务标记为已完成
相关文章:
- · 关于表空间
- · 数据库的选型原则
- · SQL Server中的模式匹配
- · 知道一个值jjfda,如何查找它在那个表,那个字段
- · 从动态SQL中返回值
- · 三大数据库之间对比
- · Is iSQL Plus running
- · Enterprise Manager 10 g
- · 存储过程编写经验和优化措施
- · 在SQL中调用COM对象
- · HP小型机软件故障诊断
- · HP小型机软件故障诊断
- · 关于Visio2000 Enterprise和Visio for Enterprise Architects版本中数据库模型的翻译错误!
- · xp_cmdshell
- · 使用热备份进行分时恢复----怎样通过归档逐步恢复以缩短数据迁移时间
- · SQL语法查询文档
- · 微软正版WinXP中使用盗版软件 还有黑客数字签名
- · 嗨 甲骨文【4】
- · OCP 8i 考试历程-5(over)
- · Excel每个Worksheet最多只能有65636条记录
- · Sql Server基本函数
- · 与datafile相关的表和视图
- · RMAN 初学者指南
- · sql日记(相关子查询,动态交叉表篇)
- · 在SQL中使用convert函数进行日期的查询
- · 网址管理专家 1.5 优化版 (免费版本) 请大家测试
- · SQL Server 2000游标使用方法
- · 数据库设计经验
- · 计算指定年月的最后一天的自定义函数
- · 数据库的跨平台设计
- · Crystal Reports 和sql-server共同进行报表的开发--存储过程-实践
- · SQL中的两个值得注意的特殊符号
- · 关于字符集的测试报告
- · PL/SQL单行函数和组函数详解
- · 存储过程编写经验和优化措施
- · SQL的详细语法介绍——对于学习数据库最基础知识二
- · SQL的详细语法介绍——对于学习数据库最基础知识一
- · 嗨 甲骨文【3】
