首先检查AIX版本,修改一些系统参数:
[xfxyxh][/]#oslevel -s
5300-09-01-0847
符合操作系统5.3 ML01以上的要求。
接着修改系统参数:
[xfxyxh][/]#vmo -p -o v_pinshm=1
[xfxyxh][/]#vmo -p -o minperm%=5
[xfxyxh][/]#vmo -p -o maxperm%=90
[xfxyxh][/]#vmo -p -o maxclient%=90
[xfxyxh][/]#vmo -p -o maxpin%=90
[xfxyxh][/]#vmo -p -o lru_file_repage=0
如果要使用大页内存,还需要修改下面两个系统参数:
[xfxyxh][/]#vmo -r -o lgpg_regions=310 lgpg_size=16777216
其中lgpg_regions=310是根据metalink上的文档结合SGA大小计算出来的:
num_of_large_pages = INT((total_SGA_size-1)/16MB)+1
然后运行:
[xfxyxh][/]#bosboot -ad /dev/ipldevice
[xfxyxh][/]#reboot -q
在Oracle 10.2.0.4版本上,不能简单的设置lock_sga=true就将SGA PIN在内存了,还需要做一些额外的工作:
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGAE oracle
给oracle用户添加这两个capability。
启动oracle数据库之前系统的内存使用情况:
[xfxyxh][/]#svmon -G
由上可见4K的page有358164个pin在内存中,310个16M的大页内存一个也没使用。
启动oracle数据库,再看:
[xfxyxh][/]#svmon -G
4K的page pin在内存中的由358164个增加到1934932个,而16M的大页内存inuse的为0,alp、flp也证实了这点。
为什么oracle不使用大页内存呢?原来还需要告诉oracle使用大页内存:
[xfxyxh][/]#export LDR_CNTRL=LARGE_PAGE_TEXT=Y@LARGE_PAGE_DATA=M
重启数据库,监控一下内存:
可见16M的大页内存inuse的为288,剩余22个,大页内存生效了
另外验证了一下对于普通的oracle连接是否也使用大页内存,如果普通oracle连接也使用16M的大页内存那对资源、对性能都有很大影响。
1、首先使用sqlplus通过监听连接到该库;
2、查找出该连接的PID,假设为503920;
3、svmon -P 503920
可见第一行的16M标志为N,而其中有一行
0 0 work kernel segment (lgpg_vsid=0) L 16 16 0 16
显示使用了16M的大页内存,这个我在没有使用大页内存而且没有将SGA PIN在内存中的系统上也存在,所以我认为是没有使用16M大页内存。
这个大家如果有其他见解欢迎讨论。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/339291/viewspace-615331/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/339291/viewspace-615331/