9i 下sga_max_size 和SGA中各内存分配项的关系

本文探讨了Oracle数据库中SGA_MAX_SIZE参数的工作原理。该参数并非固定不变,而是随SGA内部组件(如数据库缓冲区缓存、共享池等)的变化而自动调整。启动时,Oracle请求的内存等于SGA_MAX_SIZE的值,而非SGA内部各部分的总和。
----------------------------------------------------------------
SGA_MAX_SIZE
Parameter type
Big integer

Syntax
SGA_MAX_SIZE = integer [K | M | G]



Default value
Initial size of SGA at startup, dependent on the sizes of different pools in the SGA, such as buffer cache, shared pool, large pool, and so on.

Parameter class
Static

Range of values
0 to operating system-dependent

----------------------------------------------------------------

sga_max_size 是 static 参数类型
一直比较模糊的一个概念: SGA所包含的几个内存分配项( db buffer, share pool , large pool , java pool 等 ) 内存值发生变化导致整个SGA和发生变化时, sga_max_size 会不会自动变化 ( 根据定义应该是自动发生变化的,当startup时候 ) ?

产生这个疑问是源于看了一本performance tuning的书,上面写道:如果整个SGA内存区大小加和是 300 M , 而sga_max_size 被设置为 500m , 那么oracle仍然从空闲内存中要求 500 m 的内存 。也就是说Oracle 数据库启动时会向操作系统要求和sga_max_size 参数值相等的内存, 而不是去看SGA各项内存的加和 ( 这样可能造成浪费 ) 。

今天测试发现 sga_max_size 是随SGA中各内存分配项( db buffer, share pool , large pool , java pool 等 ) 的总和变化而变化的。当SGA各项变化导致总和发生变化, 那么sga_max_size 在重新启动db时就会自动根据变化的内存值总和改变自己的值 。


从上面分析可以得出,sga_max_size 其实是不需要手动调整的 ( 如果内存变更后允许startup的话 ) 。 应该不太可能出现上面提到的sga_max_size 被设置为 500m , 而SGA各项内存值加和才 300 m .

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

转载于:http://blog.itpub.net/35489/viewspace-84453/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值