PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息。在Oracle8i 中,PGA调整非常复杂,要调整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、 CREATE_BITMAP_AREA_SIZE等参数。在ORACLE9I以后,只需要调整 PGA_AGGREGATE_TARGET。
每个用户连接到Oracle,都会占用一定的内存,当然,用户一般连上之后还会做一些操作,比如一般的查询,有排序操作的查询,或用到Hash连接的查询。这些都需要内存,而这些内存(还有一些其他的,这里就不说了。)加起来就是PGA的大小了。如果PGA设置的过小,会导致Oracle频繁同磁盘进行交换,性能将会受到很大影响。
通过下面的命令来查看SGA:
show parameter pga;
结果如下图:
pga_aggregate_target的值就是PGA的大小,从上图可以看出pga_aggregate_target的大小是200M。
通过下面的命令可以修改共享池内存的大小:
alter system set pga_aggregate_target=90M scope=both;
pga_aggregate_target是一个动态参数,可以在运行时修改,因此这里的scope设置为both,新的内存大小马上生效,并且还将修改保存在Oracle的启动文件里。
可以通过下面的命令查看命中率:
SELECT a.VALUE "看命中率咯"
FROM V$PGASTAT a
where a.NAME = 'cache hit percentage';
结果如下: