<b>Oracle回滚段的概念,用法和筹划及问题的办理</b>[Oracle防范]
本文“<b>Oracle回滚段的概念,用法和筹划及问题的办理</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
回滚段管理一向是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和筹划及问题的办理.
回滚段概述
回滚段用于存放数据改正之前的值(包含数据改正之前的位置和值).回滚段的头部包含正在利用的该回滚段事件的信息.一个事件只能利用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事件的回滚信息.
回滚段的作用
事件回滚:当事件改正表中数据的时刻,该数据改正前的值(即前影像)会存放在回滚段中,当用户回滚事件(ROLLBACK)时,ORACLE将会操纵回滚段中的数据前影像来将改正的数据恢复到本来的值.
事件恢复:当事件正在处理的时刻,例程失利,回滚段的信息保存在重做日记文件中,ORACLE将在下次翻开数据库时操纵回滚来恢复未提交的数据.
读一致性:当一个会话正在改正数据时,其他的会话将看不到该会话未提交的改正.并且,当一个语句正在履行时,该语句将看不到从该语句开始履行后的未提交的改正(语句级读一致性).当ORACLE履行SELECT语句时,ORACLE按照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理.可以想象:当一个长时间的查询正在履行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将操纵回滚段的数据前影像来构造一个读一致性视图.
事件级的读一致性
ORACLE普通供应SQL语句级(SQL STATEMENT LEVEL)的读一致性,可以用以下语句来实现事件级的读一致性.
SET TRANSACTION READ ONLY;
或:
SET TANNSACTION SERIALIZABLE;
以上两个语句都将在事件开始后供应读一致性.需求注意的是,利用第二个语句对数据库的并发性和性能将带来影响.
回滚段的种类
系统回滚段:当数据库成立后,将自动成立一个系统回滚段,该回滚段只用于存放系统表空间中对象的前影像.
非系统回滚段:拥有多个表空间的数据库至少应当有一个非系统回滚段,用于存放非系统表空间中对象的数据前影像.非系统回滚段又分为私有回滚段和公有回滚段,私有回滚段应在参数文件的ROLLBACK SEGMENTS参数中列出,以便例程启动时自动使其在线(ONLINE).公有回滚段普通在OPS(ORACLE并行服务器)中呈现,将在例程启动时自动在线.
DEFERED回滚段:该回滚段在表空间离线(OFFLINE)时由系统自动成立,当表空间再次在线(ONLINE)时由系统自动删除,用于存放表空间离线时产生的回滚信息.
回滚段的利用
分配回滚段:当事件开始时,ORACLE将为该事件分配回滚段,并将拥有最少事件的回滚段分配给该事件.事件可以用以下语句申请指定的回滚段:
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment
事件将以次序,循环的方法利用回滚段的区(EXTENTS),当当前区用满后移到下一个区.几个事件可以写在回滚段的同一个区,但每个回滚段的块只能包含一个事件的信息.
比方(两个事件利用同一个回滚段,该回滚段有四个区):
1、事件在举行中,它们正在利用回滚段的第三个区;
2、当两个事件产生更多的回滚信息,它们将持续利用第三个区;
3、当第三个区满后,事件将写到第四个区,当事件开始写到一个新的区时,称为翻转(WRAP);
4、当第四个区用满时,假如第一个区是闲暇或非活动(利用该区的全部事件完成而没有活动的事件)的,事件将接着利用第一个区.
回滚段的扩大(EXTEND)
当当前回滚段区的全部块用完而事件还需求更多的回滚空间时,回滚段的指针将移到下一个区.当最后一个区用完,指针将移到第一个区的前面.回滚段指针移到下一个区的前提是下一个区没有活动的事件,同时指针不能跨区.当下一个区正在利用时,事件将为回滚段分配一个新的区,这种分配称为回滚段的扩大.回滚段将一向扩大到该回滚段区的个数到达回滚段的参数MAXEXTENTS的值时为止.
以上是“<b>Oracle回滚段的概念,用法和筹划及问题的办理</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |