- 最后登录
- 2022-8-22
- 在线时间
- 39 小时
- 威望
- 109
- 金钱
- 695
- 注册时间
- 2012-4-13
- 阅读权限
- 50
- 帖子
- 69
- 精华
- 0
- 积分
- 109
- UID
- 349
|
1#
发表于 2012-5-18 09:00:35
|
查看: 5981 |
回复: 3
以下是关于SGA_TARGET的说明:
在10g之前,SGA的各个内存区的大小都需要通过各自的参数指定,并且都无法超过参数指定大小的值,尽管他们之和可能并没有达到SGA的最大限制。此外,一旦分配后,各个区的内存只能给本区使用,相互之间是不能共享的。有了SGA_TARGET这个参数后,你就不需要为每个内存区来指定大小了。SGA_TARGET指定了SGA可以使用的最大内存大小,而SGA中各个内存的大小由Oracle自行控制,不需要人为指定。
现在的问题是:如果设置的SGA_TARGET参数不为0,而且又手工设置了其他参数,比如
SGA_MAX_SIZE = 2GB
SGA_TARGET = 2GB
SHARED_POOL_SIZE = 120MB
DB_CACHE_SIZE = 896MB
STREAM_POOL_SIZE = 0
LARGE_POOL_SIZE = 110MB
这个时候, SHARED_POOL_SIZE, DB_CACHE_SIZE, LARGE_POOL_SIZE之间的内存分配及自动调整又是怎么样的呢?是按手工设置的值分配初始大小,然后使用过程中动态分配超过初始值的部分,还是系统会自动忽略手工设置的值,全部动态分配呢?会不会出现实际分配的值比手工设定的值小的情况(比如SHARED_POOL_SIZE在某一时刻分配的值为100MB(<120MB))? |
|