设置process时需要注意的有这么几个方面
1、受操作系统参数的限制,操作系统中oracle用户使用的nproc参数要够大,否则process设的再大也没有用。
2、查看oracle数据库pga的大小,如果pga太小也会有问题。
3、process的设置还和shared_pool有关系
今天我们主要分析第二点和第三点
首先看PGA的问题,我们使用的是专用服务器(DEDICATED)连接方式的话,客户端建立一个连接,PGA会给会话分配一定的内存来支持会话。那么我们要知道一个会话大约需要多少内存,然后合理设置好PGA才会达到预期的效果。
下面是一个例子,分配了大约2.2M,实际使用了2M左右,
SQL> select sum(pga_used_mem)/1024 total_used, sum(pga_used_mem)/count(1)/1024 used_avg, sum(pga_alloc_mem)/1024 total_alloc, sum(pga_alloc_mem)/coun
(1)/1024 alloc_avg from v$process;
TOTAL_USED USED_AVG TOTAL_ALLOC ALLOC_AVG
---------- ---------- ----------- ----------
48146.8887 2006.12036 55651.084 2318.79517
但据大牛们的经验值:一个连接在linux系统下占用PGA 5M,AIX下占用10M左右,那么我们稳当一点,设置大一点的PGA给每个线程。
接下来我们来看第三点
如果没有使用ASMM、AMM自动管理的话,如果设置过大的话会,有可能出现ORA-00371的错误,共享池设置太小。如果设置了就不会出现错误,但是还是要注意processes的设置还是根据需求来设置,因为设置过大会造成共享池的浪费(每个进程大约56Khttp://warehouse.itpub.net/post/777/515882)
下面是process=1500
SQL> select * from v$sgainfo;
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1375792 No
Redo Buffers 5804032 No
Buffer Cache Size 41943040 Yes
Shared Pool Size 469762048 Yes
Large Pool Size 4194304 Yes
Java Pool Size 8388608 Yes
Streams Pool Size 4194304 Yes
Shared IO Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 535662592 No
Startup overhead in Shared Pool 218103808 No ------这里
process=150
SQL> select * from v$sgainfo;
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1375792 No
Redo Buffers 5804032 No
Buffer Cache Size 41943040 Yes
Shared Pool Size 469762048 Yes
Large Pool Size 4194304 Yes
Java Pool Size 8388608 Yes
Streams Pool Size 4194304 Yes
Shared IO Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 535662592 No
Startup overhead in Shared Pool 58720256 No -----这里
原文转自: http://blog.csdn.net/tonyzhou_cn/article/details/9898977