ITPub博客

首页 > 数据库 > Oracle > 回滚段记载

回滚段记载

原创 Oracle 作者:dotaddjj 时间:2011-09-28 08:36:00 0 删除 编辑

回滚段管理:

回滚段的头部包含了使用该回滚段的事务的信息,一个事务只能只用一个回滚段,而一个回滚段可以存放多个事务的回滚段信息。

事务级的读一致性:

Set transaction read only

set transaction isolation level serializable;(对数据库的并发性和性能带来影响)

上述都可以设置事务期间的数据不会因为别的事务提交带来的影响。靠回滚段来实现的。

回滚段种类:System表空间的系统回滚段和非系统回滚段。

System系统回滚段用于存放系统表空间中对象的数据前映像。

非系统回滚段:又分为公有回滚段和私有回滚段,私有回滚段应在参数文件的rollback segments参数中列出,以便启动时自动使其online;私有回滚段一般在OPS(oracle并行服务器)出现,启动时自动在线。

Defered回滚段:defere回滚段在表空间离线时系统自动创建,上线时系统自动删除,用于存放表空间离线时产生的回滚信息。

分配回滚段:事务开始,oracle将拥有事务最少的回滚段分配给该事务。

事务可以指定申请回滚段

Set transaction use rollback segment rollback_segment_name

事务以顺序循环的方式使用回滚段的extents,几个事务可以写在回滚段的一个区,事务从一个区写到另一个区时,称为翻转WRAP,但是回滚段的块只能存储一个事务的信息。

回滚段的扩展(EXTEND)

当下一个区正在使用时,事务将为回滚段分配一个新的区,这种分配称为回滚段的扩展。回滚段将一直扩展到该回滚段区的个数到达回滚段的参数MAXEXTENTS的值时为止。

回滚段的回收和optimal参数:

Optimal参数指明回滚段空间收缩到的位置,指明回滚段的optimal参数可以减少回滚段空间的浪费。

手工创建回滚段:

Create public|rollback segment rbs01

Tablespace users

Storage(initial 100K next 100K minextents 2 maxextents 100 optimal 100K)

(回滚段可以在创建时指明private或public,创建后就不能修改回滚段的类型

其中optimal必须大于等于初始段的初始大小,minextents必须大于等于2,pctincrease必须等于0)

建议:initial=next,设置optimal参数来节约空间的使用,maxextents为unlimited。

使回滚段在线
当回滚段创建后,回滚段是离线的,不能被数据库使用,为了使回滚段被事务利用,必须将回滚段在线。可以用以下命令使回滚段在线:

alter rollback segment rollback_segment_name online
使回滚段在数据库启动时自动在线,可以在初始化动态参数指定

Alter system set rollback_segments=’tbs01’ scope=spfile

由于是静态参数,需要指定scope=spfile重启数据库才能生效。

使用alter修改回顾段storage参数
alter rollback segment rollback_segment(maxextents 500)
(Alter无法修改initial参数)

回收回滚段的空间

如果指定了optimal参数oracle将自动回收回滚段,optimal参数设置一般和initial一致

手动回收回滚段:
alter rollback segment rollback_segment_name shrink to integer
如果不指明TO integer的数值,ORACLE将试图回收到OPTIMAL的位置。
回滚段离线:
alter rollback segment tbs01 offline


删除回滚段当回滚段不再需要或要重建以改变INITIAL时,可以将其删除。要删除回滚段,
DROP ROLLBACK SEGMENT rollback_segment;

跟回滚段相关的视图:V$ROLLNAME,V$ROLLSTAT ,dba_rollback_segs

用v$rollname中的usn和v$rollstat关联
SELECT n.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
FROM v$rollname n,v$rollstat s
WHERE n.usn=s.usn;

回滚段的数量规划
对于OLTP系统,存在大量的小事务处理,一般建议:
数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。
对于批处理,一般建议:
少的大回滚段;每个事务一个回滚段。

回滚段的问题及解决方法
问题一:事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚段扩展到达参数MAXEXTENTS的值(ORA-01628)。
向回滚段表空间添加文件或使已有的文件变大(增加MAXEXTENTS的值。)
问题二:读一致性错误(ORA-01555 SNAPSHOT TOO OLD)
(增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。)

后续再来看看快照过旧具体解决方法。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1055370/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: latch的基本记载
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662975