一个sga_target动态修改的问题,sga自动管理的时候,其值最大可以达到sga_max_size参数文件指定的值,也可以动态减小,在该值减小的时候,oracle会指定一个或者多个自动调优的sga中的内存结构释放内存,知道他们到达最小值,不能再减少了为止。oracle在判断sga_target最小值的时候,主要基于一下几点来考虑和判断的
1.sga中自动优化的内存结构的设定值和sga中手动设定的内存结构设定值占用sga的空间。
2CPU的数目。
3.物理内存。
..有些操作系统会有差异
一些UNIX系统不支持动态共享内存(dynamic share memory),此时sga所占的物理内存和sga_max_size相等,很明显,此时设置sga_target比sga_max_size小就毫无意义了,这种情况下,一般不建议设置sga_max_size。
在windows和solaris中sga消耗的内存和sga_target相等,此时sga_target的改变只会影响那些没有手动指定最小值的动态优化内存结构,而不会改变手动优化内存结构。
注释:
sga是由很多内存结构组成,就是所说的pool等内存结构。
当数据库参数sga_target设置值不等于0时,表示开启了自动共享内存管理(automatic share memory management)
(如果不是新环境要查看statistics_level参数是否为typical或者是all,否则无效),共享就是shared pool、large pool、java pool、buffer cache和steams pool(log buffer、keep and recycle buffer caches和nonstandard block size buffer caches也将占用sga_target,但是这几个参数不是共享的)之间的共享,当制定了sga_target后还要将这几个值设为0(完全共享),或者制定其最小值,这些设定了最小值的内存结构就是手动优化内存结构。
一般开启自动共享内存时,虽然sga_target可以动态调整,但最好是先设置sga_target的一个非零值,然后再开启数据库,动态设置该参数的值由于share pool有的时候可能不会shrink,所以有时候并不能达到预期的效果。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16969562/viewspace-757607/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16969562/viewspace-757607/