Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103760515
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-12 16:29:19

   来源:ccidnet    作者:juaha

修改回滚段的存储参数

可以使用ALTER ROLLBACK SEGMENT命令修改回滚段的存储参数(包括OPTIMAL,MAXEXTENTS)。

语法:

 

ALTER ROLLBACK SEGMENT rollback_segment
  [STORAGE ([NEXT integer[K|M]]
       [MINEXTENTS integer]
       [MAXEXTENTS {integer|UNLIMITED}]
       [OPTIMAL {integer[K|M]|NULL}]) ]

例:

ALTER ROLLBACK SEGMENT rbs01 STORAGE (MAXEXTENTS 1000);

回收回滚段的空间

如果指定了回滚段的OPTIMAL参数,ORACLE将自动回收回滚段到OPTIMAL指定的位置。用户也可以手动回收回滚段的空间。

语法:

ALTER ROLLBACK SEGMENT rollback_segment SHRINK [TO integer [K|M]];

说明:

如果不指明TO integer的数值,ORACLE将试图回收到OPTIMAL的位置。

例:

ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 2M;

使回滚段离线

为了达到以下两个目的将要回滚段离线:

1.阻止新的事务使用该回滚段;

2.该回滚段必须删除。

语法:

ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;

例:

ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

说明:

如果有事务正在使用该回滚段,运行该命令后,回滚段的状态将是PENDING OFFLINE。事务结束后,状态将改为OFFLINE,可以通过V$ROLLSTAT查询回滚段的状态。

删除回滚段

当回滚段不再需要或要重建以改变INITIAL,NEXT或MINEXTENTS参数时,可以将其删除。要删除回滚段,不许使该回滚段离线。

语法:

DROP ROLLBACK SEGMENT rollback_segment;

例:

DROP ROLLBACK SEGMENT rbs01;

查询回滚段的信息

所用数据字典:DBA_ROLLBACK_SEGS

可以查询的信息:回滚段的标识(SEGMENT_ID)、名称(SEGMENT_NAME)、所在表空间TABLESPACE_NAME)、类型(OWNER)、状态(STATUS)。

例:

SQL>SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;

回滚段的统计信息

数据字典:V$ROLLNAME,V$ROLLSTAT

例:

SQL>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;

回滚段的当前活动事务

数据字典:V$SESSION,V$TRANSACTION

例:

SQL>SELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk
    FROM v$session s,v$transaction t
    WHERE s.saddr=t.ses_addr;
   USERNAME  XIDUSN   UBAFIL   UBABLK  USED_UBLK
     -------  -------- ----------- ----------- -----------
   SYSTEM     2     2    7      1
   SCOTT      1     2    163     1
   2 rows selected.

回滚段的数量规划

对于OLTP系统,存在大量的小事务处理,一般建议:

数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。

对于批处理,一般建议:

少的大回滚段;每个事务一个回滚段。

回滚段的问题及解决方法

问题一:事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚段扩展到达参数MAXEXTENTS的值(ORA-01628)。

解决方法:向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。

问题二:读一致性错误(ORA-01555 SNAPSHOT TOO OLD)

解决方法:增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。

阅读(181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~