tom 的oracle 9i&10g编程艺术:深入数据库体系结构
中文版
P288假想场景:系统现在崩溃启动时,oralce会读取重做日志,发现针对这个事务的一些重做日志条目。给定系统的当前状态,利用
重做日志文件中对应的插入redo条目,并利用仍在缓冲区中对应的插入的redo信息,oracle 会“前滚”插入
。... 现在有一些undo块...我有两个疑问:1:并利用仍在缓冲区中对应的插入的redo信息-->这里的redo信息是不是从redo文件里读取出来的
2:现在有一些undo块 -->这里的undo块是从哪里,是因为redo信息,导致重做,产生的undo信息吗
因为是重启,所以肯定不是之前的操作产生
整个事件是:有一个插入语句,产生了些重做日志信息,其中有些日志已经输出到磁盘上,有些还在缓存中
这是假设因为故障,重启了电脑了,oracle 是怎么处理的
中文版
P288假想场景:系统现在崩溃启动时,oralce会读取重做日志,发现针对这个事务的一些重做日志条目。给定系统的当前状态,利用
重做日志文件中对应的插入redo条目,并利用仍在缓冲区中对应的插入的redo信息,oracle 会“前滚”插入
。... 现在有一些undo块...我有两个疑问:1:并利用仍在缓冲区中对应的插入的redo信息-->这里的redo信息是不是从redo文件里读取出来的
2:现在有一些undo块 -->这里的undo块是从哪里,是因为redo信息,导致重做,产生的undo信息吗
因为是重启,所以肯定不是之前的操作产生
整个事件是:有一个插入语句,产生了些重做日志信息,其中有些日志已经输出到磁盘上,有些还在缓存中
这是假设因为故障,重启了电脑了,oracle 是怎么处理的
解决方案 »
- win 7无法安装oracle客户端,请高手指点
- 急!!!那位帮忙为小弟看个触发器的问题
- 使用10g中,从某一表中删除记录时,出现ORA-00903:表名无效的错误
- !!!关于Oracle Management Server 的配置,登陆(身份验证)
- select 帐户问题
- 如何在一台服务器上创建多个实例使用多个监听端口
- 在redhat7.2上安装Oracle9i后,创建数据库时出错.....
- oracle中提取一个date类型中的年份的函数是什么啊?
- 如何删去Oracle表中的重复记录??
- 关于Oracle817的客户端直接做安装
- windows下面安装的oracle 11g 用自带的sql plus 操作的,执行了一下shutdown,在连接就连不上了,请问应该如何操作?
- ORACLE表权限问题
我有个中文版的PDF 288页是讲隔离级别的你上面那一段描述太简短了
而且翻译的好像不太好
我没看太明白什么意思
呵呵 想帮你也有心无力呀
我的是实体书,中文版的
第九章 redo 与undo
9.3节 redo 和undo如何协作
2 update 假想场景 系统现在崩溃
你想问的是哪一个
现在变update了?
书上是说insert ,但实际是update 我想他们两个原理应该一样,你就说说简单点的insert 吧
这是假设因为故障,重启了电脑了,oracle 是怎么处理的 举个例子吧 可能不是特别严谨 不过谨以此来说明一些处理的过程
假设插入了1、2两行
行1产生的redo在内存中
行2产生的redo已经输出到磁盘上
这个时候发生了故障……
下次ORACLE在启动的时候 系统会自动进行instance recovery
由于行1的redo在内存中 还没来得及输出到磁盘上 所以系统就当它从来没有发生过
行2产生的redo 已经写到磁盘上了
这个时候ORACLE会redo这个操作
在这个重做的过程中会产生两部分内容
一部分就是修改过的数据块 还有一部分就是这个修改所产生的undo(redo也是会产生undo的)
接下来ORACLE发现你这个事务并没有commit
所以就用前面产生的undo来回滚这条插入所以 最终的结果就是行1和行2都不存在