08 Undo表空间管理.pptVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
08 Undo表空间管理

这就涉及了另外一个话题 Undo_retention参数不能保证undo信息保留足够的时间,oracle只是尽量的保证undo数据块不被覆盖掉,当空间不够的时候,Oracle还是会将保留时间小于undo_retention的undo数据覆盖掉。 从Oracle 10g开始,我们可以在建立undo表空间的时候,设置retention guarantee属性,从而让不会出现上面的情况。 也就是说 当undo数据文件不能扩展,并且undo信息不够用时,直接报错,而不是覆盖那些inactive而又没有expired的undo块。 经过15分钟以后,也就是undo_retention以后,表空间可以被删除。 表空间的这个参数是可以修改的。 设置Undo表空间的大小 1、借助视图,看一下每隔十分钟产生的undo块的数量,oracle会保留最近7天的数据 如果数据库启动足够长的时间,那么会保留7天的数据,也就是1008行数据。 有公式可以计算如何设置undo的大小。但是我们最好还是借鉴Oracle提供的advisor。 根据系统的负载,不同的还原保留时间所需要的undo空间。 * 总结一句话,开始读、记录当前的SCN、读取过程中,读取每一个数据块头部的ITL槽中的SCN,如果小于开始时刻的SCN,那么直接读、如果大于,那么就根据对应ITL槽中记录的undo地址,读取undo数据块的数据。 1、对于DML语句来说,只要修改了数据块,Oracle数据库就会将修改前的数据块保留下来,保存在undo segment里面,而undo segment则保存在undo表空间中 2、undo的管理 1、自动undo管理(Oracle9i开始)AUM 2、手工undo管理MUM 9i以后,就建议使用AUM,因此就不再讨论MUM 一条DML语句的执行流程update t set coll=‘A’ where coll=‘B’ 1、在shared pool里面进行解析,从而生成执行计划 2、根据执行计划,得出coll=‘B’的记录存放在10号数据文件的54号数据块里面 3、服务器进程首先在buffer cache寻找一个可用的undo数据块(如果一个事物已经提交,那么这个事务曾经使用过的undo数据块就可以被使用),如果没有发现,则到undo表空间里找到一个可用的undo数据块,并调入到buffer cache。假设获得的undo数据块号为24号,位于11号undo数据文件里 4、将改变前的值,也就是B放入24号undo数据块(buffer cache中) 5、由于undo数据块发生了变化(只要是数据块发生变化,那么就产生重做记录),于是产生重做记录,假设重做记录号是120 6、在buffer cache里面找到54号数据块,如果没有,则从10号数据文件调入 7、将改变后的值,也就是A放入54号数据块 8、由于数据块发生了变化,于是产生重做记录,假设重做记录号是121 9、控制权返回给用户,如果使用SQLPLUS,那么表现为光标返回 10、用户发出commit命令,触发LGWR,将120、121这两个重做记录写入联机重做日志文件中,将54号、24号两个数据块头部所记录的事务状态标记设置为已提交,控制权返回给用户,如果使用SQLPLUS,那么表现为光标返回 11、这个时侯,54号和24号数据块并不一定被DBWr写入数据文件,只有在脏数据块的数量达到一定程度的时候才会被写入 事务提交以后,该事务所使用的undo数据块就可以被覆盖,上面的例子中,第10步用户提交以后,24号undo数据块就可以被覆盖 Undo的作用 1、提供读一执性 2、回滚事务 3、实例恢复 读一致性 一个场景描述 读一致性是相对脏读而言的,表T中有10000条记录,获取所有的记录需要15分钟的时间,当前时间为9点整,用户发出一条select * from T命令,该语句在9:15完成。当用户执行该语句到9:10分的时候,另外一个用户发出了一条删除命令,将最后一条记录删除,并且进行了提交。 到9点15分的时候,用户返回了多少条记录。 如果是9999条,那么就是脏读、如果是10000条,那么就是读一致性。 Oracle不会出现脏读,提供读一致性,而且没有阻塞DML操作 Oracle如何实现读一致性呢? 1、用户在9点发出select语句的时候,服务器进程会记录9点那个时刻的SCN号(SCN号是以时间(timestamp)作为参数的一个函数返回值,调用函数(默认以timestamp为参数)随时可以返回这个时刻的SCN号,可以使用函数在SCN和timestamp之间进行转换),假设该SCN号是SCN9.00,那么SCN9.00一定大于等于记录在所有数据块头部的ITL槽中的SCN号(如果有多个ITL槽,

文档评论(0)

qianqiana + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5132241303000003

1亿VIP精品文档

相关文档