回滚段管理:
回滚段的头部包含了使用该回滚段的事务的信息,一个事务只能只用一个回滚段,而一个回滚段可以存放多个事务的回滚段信息。
事务级的读一致性:
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博客 ” ,链接:http://blog.itpub.net/25362835/viewspace-1055370/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25362835/viewspace-1055370/