ITPUB??ì3
ITPUB论坛 » Oracle专题深入讨论 » 关于一致性读的疑问。

标题: 关于一致性读的疑问。
离线 yaguo_96
初级会员



精华贴数 0
个人空间 0
技术积分 461 (4123)
社区积分 0 (103999)
注册日期 2004-1-31
论坛徽章:0
      
      

发表于 2008-4-23 16:31 
关于一致性读的疑问。

看了biti的关于一致性读的文章。还是有些不明白。

假设这样一种情况,一个大查询开始FTS查询大表 ,然后另外一个session更新了表末尾的某条数据并提交,更新了N次 ,由于多次事务的DML使得该block上的相关XID和LOCK信息早已荡然无存 ,该记录行上的 XID 已经被设置为 0  了,也就是根本找不着  ITL 信息 ,那这样的情况下,oracle 是怎么找出事务的 before  image ?

如果查询开始后,一个快被update并提交了很多次,dump 块里itl都没有活动的了,记录项对应的lb 都是0x0了,这个时候怎么和undo entries 对应呢?


只看该作者    顶部
离线 ora110



精华贴数 0
个人空间 0
技术积分 5483 (231)
社区积分 1243 (783)
注册日期 2007-8-3
论坛徽章:17
会员2007贡献徽章授权会员2008年新春纪念徽章   
      

发表于 2008-4-23 22:53 
数据的前象是存放在undo中,自然可以存放n版本。只要不被覆盖掉总是可以找到的。


__________________
concepts-->Performance Tuning Guide and Reference--> backup and recovery concepts-->Recovery Manager User's Guide --> Backup and Recovery Concepts--> Administrator's guide
只看该作者    顶部
离线 kdkd
一般会员


精华贴数 0
个人空间 0
技术积分 1872 (839)
社区积分 28 (6300)
注册日期 2005-4-29
论坛徽章:8
授权会员2008北京奥运纪念徽章:拳击数据库板块每日发贴之星生肖徽章2007版:鸡  
      

发表于 2008-4-23 23:06 
根据判断scn的,若果该块的scn大于select开始的scn则在undo中找,只要undo中的前像不被覆盖就能找到。


只看该作者    顶部
离线 yaguo_96
初级会员



精华贴数 0
个人空间 0
技术积分 461 (4123)
社区积分 0 (103999)
注册日期 2004-1-31
论坛徽章:0
      
      

发表于 2008-4-24 09:40 
1 延迟块清除
  一个update commit 时,如果修改的块已经写进df 或修改的块大于10%buffer_cache size
  别写进df 的块或者大于10%buffer_cache 的块就会块清除
  在块下次被update 或select 的时候会根据block活动的事物表,找对应的undo header 如果这个事物提交了。
  就清楚block 的锁定信息,修改这个事物的scn 如果,undo header 的事物已经不是这个事物了,就取 undo header 中
  的scn 当作这个事物的scn (就是undo$中对应段的信息),如果select 的 scn 小于这个 scn ,系统就不知道这个事物是在
  select 前还是后提交的,就会触发回滚段旧的错误。
3 一致性读
  查询发起后,找到一个快,首先看查询scn 是否小于块的scn 或者块中是否有active 事物,如果有active 事物,就构照 cr
  块,找到undo block信息回滚,如果 查询scn<block scn ,就根据block 中 的itl 中最后的事物向前回滚。因为查询发起后
  快可能进行了多次commit,在回滚到第一个itl末尾,如果还有另外的事物,会显示这个itl,接着在回滚这个itl,一直回滚到查询scn>
  快的scn,回滚过程中如果找不到undo 信息,就出现回滚段旧的错误。

这是我总结的,不知道对不对。


只看该作者    顶部
离线 晶晶小妹
月是上弦


精华贴数 3
个人空间 6470
技术积分 1721 (937)
社区积分 8 (12228)
注册日期 2008-2-15
论坛徽章:4
现任管理团队成员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:体操数据库板块每日发贴之星  
      

发表于 2008-5-20 10:07 
块的ITl事务槽会被写到回滚段中的。


__________________
没有必胜的秘籍,没有方程式遵循
要赢~只有全身心的投入!



为了方便大家查阅,所有的文章都已转入空间

http://space.itpub.net/?13095417

请大家多多支持!
只看该作者    顶部
离线 南北少林



来自 杭州
精华贴数 0
个人空间 0
技术积分 3 (153707)
社区积分 0 (1774272)
注册日期 2008-5-19
论坛徽章:0
      
      

发表于 2008-5-20 14:26 
在UNDO里可以找到。只要UNDO没有被覆盖掉


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问