最近在学习ORACLE9i,看SG时看到
The PGA is memory reserved for each user process that connects to an
oracle database这句话时,有点不太明白。
如果有多个用户同时连接到数据库时,那么系统中只有一个PGA还是对每个用户都有一个PGA,望高手指点,谢谢。
PGA包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域, PGA 在创建进程时分配在终止进程时回收,PGA是通过C的
malloc()直接定位内存,它可以在数据库运行的时候增大或缩小。
在专用服务器配置服务器的PGA包括下面的组件
Sort area:用于处理SQL语句时可能需要的任何排序
Session information:包括用于会话的用户权限和性能统计
Cursor state:标明处理会话当前使用的SQL语句中的阶段
Stack space(包含其它会话变量)
在MTS中 PGA包括:Stack space
PGA占用的内存数量
select name, sum(value/1024) "Value - KB"
from v$statname n,
v$session s,
v$sesstat t
where s.sid=t.sid
and n.statistic# = t.statistic#
and s.type = 'USER'
and s.username is not NULL
and n.name in ('session pga memory', 'session pga memory max')
group by name;