日期:2013-08-05  浏览次数:20471 次

毛病景象:
数据库无法启动或者cluster系统无法切换。查看数据库日志文件$ORACLE_BASE/admin
ORCL/bdump/alert_ORCL.log有类似于ORA-01599: failed to acquire rollback
segment (49), cache space is full (currently has (48) entries) Error 1599
happened during db open, shutting down database类似的错误信息。


毛病分析:
Orale存在一个初始化参数max_rollback_segments它代表了同时能够online的回滚段
的个数。它的缺省值是max(30,TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)
。当初始化参数中指定(通过rollback_segments参数)或者缺省online的回滚段个数
超过max_rollback_segments这个参数后数据库就无法启动。这个错误往往是由于用户
在添加了回滚段之后只是修正了rollback_segments参数但没有修正max_rollback_se
gments参数导致的。或者用户添加了public回滚段,同时在初始化参数中注释掉了max
_rollback_segments参数也会导致这个问题。

毛病处理:
可以将oracle初始化参数中的max_rollback_segments修正为大于当前所有的回滚段的
总数后再重起数据库即可。如果不知道当前到底有多少回滚段,可以先将这个值设置
为100再重起数据库试试。如果还报告同样的错误就再提高此值直到成功为止。当数据
库启动起来当前可以通过select count(*) from dba_rollback_segs来获得确切的回
滚段个数后再去修正初始化参数。

日常维护:
在添加回滚段的时候请留意max_rollback_segments和rollback_segments这几个参数
之间的互相作用,最好同时在两个节点上都参看一下。