又见bug,动态调整SGA参数导致数据库crash

最近遇到这样一个事情,在动态的调整sga的一个参数的时候,数据库就down了:

对应的,在alertlog中的报错为:

对应的tace文件中的call stack为:

经查metalink,应该是这以下的2个bug有关:

我操作的数据库是aix上oracle 10.2.0.3数据库。目前这2个bug都还没有在10203上的fix,只是建议升级到10204或者用workaround的解决。workaround是用alter system scope=spfile的方式修改,再重启数据库生效。

这让我感觉10g上的自动内存管理不太靠谱,虽然自动内存管理可以动态调整buffer cache和其他几个pool如share pool之间的比例,但是如果一个系统是成熟的系统,很好的进行了绑定变量,那么就不太会发生各个池子之间比例的变动。如果连动态的调整一下sga中的一个组件,都会导致MMAN将数据库down掉的话,那oracle是不是太脆弱了呢?

另外,在查询关于这个ora-600的相关报错信息的时候,还查到了另一个有意思的bug:

这个是Bug 4433838,影响10201至10203的所有平台,这个bug虽然和我的情况有点出入,文档说是MMON进程终止实例,我的情况是MMAN进程终止实例。但文档说触发这个bug的cause是sga的大小为4G的整数倍。呵呵,碰巧,我的sga_target和sga_max_size为12G,正是4G的倍数。而且ora-600之后的参数和trace文件中的信息也和我类似。

因此,综上,在10204以下的版本设置调整SGA的时候,需要注意以下几点:
1、SGA大小不要设置成4G的整数倍。
2、调整SGA内的组件的时候,不要动态的调整,利用scope=spfile再重启数据库进行修改。

附:

相关文章

一条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据