关于_rollback_segment_count

某客户添加节点在做dml操作的时候报错,执行不了dml操作,后来经过排查是客户设置了 _rollback_segment_count 参数。
最佳实践提高Oracle性能设置了_rollback_segment_count 为12000,提前创建好12000个undo段,不用在事务过程中动态的创建undo段,这样可以提高业务事务的性能。通过我们的排查发现Oracle对undo segment的个数是有限制的32760,首先oracle在1和2号节点上创建了2.4W个undo段(每个实例12000个),随后,添加了3号节点和4号节点,也就是说3号节点和4节点是在后面添加进来的,由于1号和2号已经占用了2.4W个undo段,在添加3号节点占用了最后的剩余的8000多个undo段,最终在添加4号节点后已经没有可用的undo段了,数据库的undo segment的数量达到了oracle的数量上限32760。


++++++++++++++++++++++++++++++++++++++++++++++++=
##新添加的节点ora-01552错误问题分析原因
oracle对于undo段的数量是有限制的,每个DB最多可以创建32760个undo段。


由于该环境在压测调试期间设置了参数_rollback_segment_count 为12000,该值代表实例启动后,提前创建好12000个undo段,不用在事务过程中动态的创建undo段,这样可以提高压测期间事务的性能。标准实施环境不用设置该参数。


回到我们的环境中,由于参数_rollback_segment_count的设置,首先oracle在1和2号节点上创建了2.4W个undo段(每个实例12000个)。


随后,添加了3号节点和4号节点,也就是说3号节点和4节点是在后面添加进来的,由于1号和2号已经占用了2.4W个undo段,在添加3号节点占用了最后的剩余的8000多个undo段,最终在添加4号节点后已经没有可用的undo段了,数据库的undo segment的数量达到了oracle的数量上限32760。


## 如何解决
* 重置参数rollback_segment_count
* 删除一些offline状态的undo 段,使数据库的undo段数量低于阀值32760
* 新建一个undo表空间,切换到新的undo表空间
*减少 _rollback_segment_count数值

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

转载于:http://blog.itpub.net/30345407/viewspace-2151446/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值