请教有关PGA的问题

[复制链接]
查看11 | 回复5 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
最近在学习ORACLE9i,看SG时看到
The PGA is memory reserved for each user process that connects to an
oracle database这句话时,有点不太明白。
如果有多个用户同时连接到数据库时,那么系统中只有一个PGA还是对每个用户都有一个PGA,望高手指点,谢谢。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
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;
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
晕,版主直接告诉我是一个还是多个就行了?你的答案我还是搞不清楚。


回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
PGA 是只被一个进程使用的区域
这里不是已经说了么???
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
那就是说如果有多个用户同时连到数据库时,系统就存在多个PGA.
谢谢,我有点笨。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
应该说。PGA会为每个用户进程建立一个专用的内存区域。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行