Discuz教程网

AIX下ORACLE占用内存过多,应该从哪方面着手呢?

[复制链接]
authicon 蜗牛 发表于 2010-10-26 04:38:04 | 显示全部楼层 |阅读模式

机型:IBM P570
8CPU
16G内存
操作系统
# oslevel
AIX 5.3.0.0
数据库
ORACLE Release 9.2.0.7.0
机器上安装两个库: oracle1,oracle2
oracle1 sga 3G pga 1G   连接数<500
oracle2 sga 2G pga 512M 连接数<50
空闲状态
#vmstat -U oracle
看到ORACLE用户占用14G的内存
空闲内存也很少
#VMSTAT 1 10
kthr    memory              page              faults        cpu   
----- ----------- ------------------------ ------------ -----------
r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
0  1 4063332  13229   0 0   0   0    0   0 174 1455 472  0  0 99 0
0  1 4063332  13057   0 0   0   0    0   0 176 1339 456  0  0 99 0
0  1 4063332  12887   0 0   0   0    0   0 174 1285 451  0  0 99 0
0  1 4063332  12884   0  0   0   0    0   0  88 1264 290  0  0 99  0
ORACLE1业务执行一个大的操作(十多个过程调用后台多条SQL语句),PI,PO换页就多了起来,ORACLE1业务操作也慢了下来,ORACLE2的业务也慢了.但系统IO不大20%-30%.
#ps aux|Grep oracle|wc -l
344
每个ORACLE进程大概占用20M左右的内存.加起来也才7G左右啊.怎么能占用14g呢?
为什么ORACLE用户占用那么多的内存呢?
请问我应该从哪方面着手处理呢?谢谢!



上一篇:oracle版本问题
下一篇:是否能用多表连接查询?大伙遇到这种情况,应该怎么去考虑?
authicon george.ma 发表于 2010-10-26 04:40:15 | 显示全部楼层

分析statspack report,看那部分有问题,很多情况下是SQL需要优化
authicon HeavenTonight 发表于 2010-10-26 06:27:37 | 显示全部楼层

关于AIX上VMO调整参数的若干说明  
最近,关于AIX机器上虚拟内存参数调整的问题出现了好几次,也调过好几台机器的参数,现结合网上的文档,把这部分知识理一理,做一下记录。
1.在AIX系统中,内存可以简单的分为两类,计算型内存和文件型内存,
在AIX操作系统中,可以使用topas命令查看整个系统的运行情况,其中一个重要的部份是系统的内存使用情况,以及交换情况:
MEMORY
Real,MB   16032
% Comp     83.2
% Noncomp   9.9
% Client    9.9
PAGING SPACE
Size,MB   16384
% Used      3.3
% Free     96.6
  在一个使用裸设备的系统中,文件型内存,即上面的%Noncomp,%Client,只需要使用整个系统很少的内存;而把大部份的内存作为计算型内存(%Comp)来使用,这部份内存量主要为ORACLE SGA和PGA所用,其中ORACLE SGA 为pinned memory.
  根据系统内存大小,设定系统可以pin住的最大值:
     maxpin% = 80   --此值可以升高
     v_pinshm = 1   --允许pin住内存
     接下来是三个控制文件型内存的参数的值:
     maxclient% = 10  --文件型内存可使用内存总的百分比的最大值,<=maxperm%
     maxperm% = 10    --文件型内存可使用内存总的百分比的最大值
     minperm% = 5     --文件型内存可使用内存总的百分比的最小值
  这三个参数,可以根据内存总量大小,进行适度调节。计算型内存与文件型内存,在实际的应用中,需要遵循以下一些原则(前3条是参考别人的):
     1.使用的文件型内存百分比 + 使用的计算型内存百分比 < 100%
     2.计算型内存中的pinned memory设置要合理,即sga大小要设置合理,要留一部份给OS,OS也需要pinned memory.当系统资源紧张时,OS的pinned memory具有最高的优先级.
     3.保证系统非pinned 计算型 memory有一个合理的成长空间,这部份主要是给ORACLE PGA使用,当连接数增长过快时,此内存的使用增长也相当的明显,而此增长很有可能会导致操作系统的交换。
     当系统的使用的文件型内存百分比 + 使用的计算型内存百分比 >= 100%,系统便开始产生交换,系统的PAGING SPACE会持续的增长,影响到产品库的安全。
     4.一般的数据库服务器,文件型内存可以使用较少的空间,由于文件型内存并不主动释放,可能造成内存资源的短缺及Paging Space使用率过高,因此数据库服务器上maxclient、maxperm、minperm的值不宜过大,典型值如下:
     maxclient% = 8     
     maxperm% = 12   
     minperm% = 5     
如何更改这三个参数呢,  在AIX5.3上,可以使用 vmo 命令,此命令设置或显示所有虚拟内存管理器调整参数的当前值或下一个引导值。还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。此命令是设置参数还是显示参数,要由所带标志来决定。带 -o 标志的话,两个操作都执行。它既可以显示参数的值,也可以为参数设置新值。
假设在修改这些参数前,想查看这些参数的值,则可以用下面的命令:
vmo -L 或者 vmstat -v 或者vmo -a
调整:vmo -p -o maxclent%=8
     vmo -p -o maxperm%=12
     vmo -p -o minperm%=5
利用-p参数,是立即生效的,不需要重启,下次重启仍然有效。
假设是-r参数,是不立即生效的,重启生效,turns on the updating of the
/etc/tunables/nextboot file.重启生效的参数记录在 /etc/tunables/nextboot。
由于参数maxperm充当的是软限制,因此文件型内存的占用率仍然可以超过maxperm的设定值,假设需要进行强制限制,则需要将参数strict_maxperm的值设为1,该参数的缺省值是0,但此方法需要谨慎使用。
备注:也许有人不是很熟悉vmo,反而熟悉vmtune,其实他们是一样的
AIX 5.3以前,查看参数值 vmtune -a
            修改minperm和maxperm的值为5%和20%,vmtune -p 5 -P 20
            假设是64位内核,vmtune64 -p 5 -P 20
AIX 5.3:    vmo -p -o maxperm%=20
            vmo -p -o minperm%=5
还没修改,等修改后将看下结果.
authicon HeavenTonight 发表于 2010-10-26 07:14:33 | 显示全部楼层

以上资料是网友a bo ci de提供的.很感谢他.
authicon iops 发表于 2010-10-26 08:38:18 | 显示全部楼层

1.假设你的应用有慢的现象,把sar -urd , sp 贴出来看看
2.有兴趣参考www.iops.com.cn - 提速网,专门处理性能问题,可以申请性能评估服务!
authicon jackws 发表于 2010-10-26 10:23:07 | 显示全部楼层

8cpu , 16g ram , 这样配机器做oracle应用, cpu 是有力使不出呢.
authicon wolfop 发表于 2010-10-26 11:16:46 | 显示全部楼层

计算内存那么大?你的 SGA设置的多大?
authicon duolanshizhe 发表于 2010-10-26 11:57:02 | 显示全部楼层

综合awr或者statspack
然后查看 aix关于内存内核参数的设定  参考二楼办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 16:17

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表