Performance tuning guide
chapter7
oracle建议用大型池(large pool)为共享服务器(shared server)相关的用户全局区域(User Global Area)分配空间,而不是使用共享池(shared pool),因为如果使用共享池分配,则导致用于library cache及dictionary cache的共享池内存下降。将全局区域UGA保存在大型池中的话,为初始化变量LARGE_POOL_SIZE指定一个值即可。
大型池大小的设置取决于并发活动的会话数。每个应用程序中,保存会话信息的内存大小各不相同。假定每个会话需要200-300kb的空间保存信息,并且预估将有100个并发活动会话,那么将大型池设置为30M即可。如果未设置大型池,那么可以增加系统的共享池解决。
会话(session)连接方式决定了会话的内存保留地址。如果会话连接至专用服务器(dedicated server),那么会话内存是用户进程内存的一部分(PGA),如果会话连接至共享服务器(shared server),那么会话内存是共享池(shared pool)的一部分。
使用以下两句sql查询当前系统的所有会话的总内存大小
SELECT SUM(VALUE) || ' BYTES' "TOTAL MEMORY FOR ALL SESSIONS"
FROM V$SESSTAT, V$STATNAME
WHERE NAME = 'session uga memory'
AND V$SESSTAT.STATISTIC# = V$STATNAME.STATISTIC#;
SELECT SUM(VALUE) || ' BYTES' "TOTAL MAX MEM FOR ALL SESSIONS"
FROM V$SESSTAT, V$STATNAME
WHERE NAME = 'session uga memory max'
AND V$SESSTAT.STATISTIC# = V$STATNAME.STATISTIC#;