关于Oracle8i回退段引起的错误

os:windows2000

db:oracle8.0.1.2

dd:2010-8-10

周二去用户单位解决oracle问题,用户反映在前台应用中,执行完插入功能后,数据没有完全被写入到数据库后台,出现了丢失数据的现象,查看警告日志后,报错如下:

ORA-01595: error freeing extent (1) of rollback segment (72))
ORA-01594: attempt to wrap into rollback segment (62) extent (1) which is being used

由于对oracle8i接触不多,看到这个错误信息有些发懵,不过看报错记录分析是跟回退段有关。google下,果然是因为回滚段扩展过小所致。

SQL> select segment_name,tablespace_name,bytes,next_extent
2 from dba_segments where segment_type='ROLLBACK';

SEGMENT_NAME TABLESPACE_NAME BYTES NEXT_EXTENT
---------------- ----------------- ---------- ------------
SYSTEM SYSTEM 409600 57344
RBS0 RBS 4194304 2097152
RBS1 RBS 4194304 2097152
RBS2 RBS 4194304 2097152
RBS3 RBS 4194304 2097152
RBS4 RBS 4194304 2097152
RBS5 RBS 4194304 2097152
RBS6 RBS 4194304 2097152

下一个区间分配的太小,只有56KB。

SQL> col name for a12
1 select s.usn,n.name,s.extents,s.optsize,s.hwmsize,s.status
2* from v$rollstat s, v$rollname n where s.usn=n.usn

USN NAME EXTENTS OPTSIZE HWMSIZE STATUS
---------- ------------ ---------- ---------- ---------- ---------------
0 SYSTEM 2 401408 ONLINE
1 RBS0 8 8388608 4186112 ONLINE
2 RBS1 8 8388608 4186112 ONLINE
3 RBS2 8 8388608 4186112 ONLINE
4 RBS3 8 8388608 4186112 ONLINE
5 RBS4 8 8388608 4186112 ONLINE
6 RBS5 8 8388608 4186112 ONLINE

已选择8行。

Oracle不允许修改各个段的初始分配值,所以只能修改NEXT_EXTENT的值,由于OPTSIZE 为空,也一起设置。

这里转一个对optsize的解释:

注:optimal 表示在事务处理当中,该回滚段由于增、删、改的数据量的需要而不断对回滚段进行扩展,以满足事务的要求,但是在事务处理完成后可以让回滚段缩小到一个最佳的范围内。这就是由回滚段的OPTIMAL参数来控制。一般optimal = initial + n* next , 且 n >1 。

根据情况optimal = initial + 2 * next = 409600 + 2* 1024000 = 2457600

SQL> alter rollback segment system storage(next 1m optimal 2457600);

重算段已修改。

SQL> select segment_name,tablespace_name,bytes,next_extent
2 from dba_segments where segment_type='ROLLBACK';

SEGMENT_NAME TABLESPACE_NAME BYTES NEXT_EXTENT
---------------- ----------------- ---------- ------------
SYSTEM SYSTEM 409600 1024000
RBS0 RBS 4194304 2097152
RBS1 RBS 4194304 2097152
RBS2 RBS 4194304 2097152
RBS3 RBS 4194304 2097152
RBS4 RBS 4194304 2097152
RBS5 RBS 4194304 2097152
RBS6 RBS 4194304 2097152

SQL> col name for a12
1 select s.usn,n.name,s.extents,s.optsize,s.hwmsize,s.status
2* from v$rollstat s, v$rollname n where s.usn=n.usn

USN NAME EXTENTS OPTSIZE HWMSIZE STATUS
---------- ------------ ---------- ---------- ---------- ---------------
0 SYSTEM 2 2457600 401408 ONLINE
1 RBS0 8 8388608 4186112 ONLINE
2 RBS1 8 8388608 4186112 ONLINE
3 RBS2 8 8388608 4186112 ONLINE
4 RBS3 8 8388608 4186112 ONLINE
5 RBS4 8 8388608 4186112 ONLINE
6 RBS5 8 8388608 4186112 ONLINE

[@more@]

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

转载于:http://blog.itpub.net/7417660/viewspace-1036739/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值