1、使用多个回滚段
使用多个回滚段来分担回滚段的争用,以提高系统性能。系统采用循环的方式来分配回滚段。当oracle创建数据库时候,系统自动在system中分配一个system rollback segment,用来完成系统的事务,不为大家共用。所以系统最后能有至少一个回滚段存放用户回滚信息。
系统能够加载的用户回滚段数量和以下几个初始化参数有关:
transactions_per_rollback_segment 指定每一个回滚段支持的并发数;
max_rollback_segments 指明系统支持的最大的online的回滚段数目;
rollback_segments 指定实例启动时所需要的回滚段;
2、选择好回滚段的类型
private必须通过实例指定名称后才能使用。
如:必须在初始化参数中rollback_segments指定后,实例启动才能使用,或者在实例启动后online才能使用。
Public则是实例启动时系统自动发现,系统根据初始化参数决定系统启动时的回滚段。
3、为事务指定回滚段
在系统启动时指定所需要的回滚段。
4、估计回滚段的大小
回滚段大小应该基于系统最大的事务。如果回滚段过小,容易产生ora-01555错误。可以使用optimize选项来限制回滚段自动回收。回滚段的大小应该是最大表的大小的10%,这个可以指定maxextents的数量。
5、创建范围大小和数量相等的回滚段组
一般来说一个回滚段应该包含10到20个范围。
s=T/n
s是初始化时定义的范围的大小,T是初始化的回滚段大小,n是范围数。由此可以确定定义回滚段的子句的各个参数。
6、定义optimal的值
设置这个参数可以避免回滚段无限扩展以及系统自动回收空间。最小是两个范围的大小。
设置回滚段在不同的表空间
1:如果系统只有一个回滚表空间,那么回滚段出现问题,影响系统不能运行。
2:包含回滚段的表空间经常分配和去配容易产生碎片。
3:当回滚表空间被离线时,系统将没有回滚表空间可以用。
MINEXTENTS最小等于2
OPTIMAL最小应该设置成两个extents大小
INITIAL和NEXT最好一样,除了应用使用指定的回滚段。
7、和回滚段相关的性能视图
DBA_ROLLBACK_GEGS:描述回滚段的信息,包含回滚段的名字和表空间;
DBA_SEGMENTS:描述回滚段的附加信息;
V$ROLLNAME:列出在线回滚段的名称
V$ROLLSTAT:包含回滚段的统计信息
V$TRANSACTION:包含撤销的统计信息