在linux平台用hugetlbfs模拟lock_sga
2007-05-13 12:29:00 来源:WEB开发网在linux平台不支持lock_sga参数。如果设定lock_sga=true,启动时将报ORA-27126错误。
下面是总结的使用hugetlbfs来模拟lock_sga的步骤。
1.查看目前使用的SGA
sqlplus / as sysdba
SQL*Plus: Release 10.1.0.3.0 - Production on ??y 4? 14 15:51:14 2007
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> show sga;
Total System Global Area 524288000 bytes
Fixed Size 1322760 bytes
Variable Size 123982072 bytes
Database Buffers 398458880 bytes
Redo Buffers 524288 bytes
SQL> show parameter sga;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 500M
sga_target big integer 500M
SQL>
2.换算成2MB的页数, 500M/2M=250
3.设定sysctl.conf和fstab
在/etc/sysctl.conf添加一行
#比SGA_MAX_SIZE最少要多加一页
vm.nr_hugepages = 260
查看oracle的id和gid
#id oracle
uid=501(oracle) gid=502(dba) groups=502(dba)
在/etc/fstab里添加一行
hugetlbfs /dev/hugetlbfs hugetlbfs mode=0777,uid=501,gid=502 0 0
#mkdir /dev/hugetlbfs
#sysctl -p
#mount -a
#grep Huge /proc/meminfo
HugePages_Total: 260
HugePages_Free: 260
Hugepagesize: 2048 kB
注:如果内存已经被占用则需要重起机器才能分配。
#mount
hugetlbfs on /dev/hugetlbfs type hugetlbfs (rw,mode=0777,uid=501,gid=502)
注:每次重新启动都要执行一次:mkdir /dev/hugetlbfs;mount -a。可以加到/etc/rc.local里自动执行
4.设定/etc/security/limits.conf文件
添加两行
oracle soft memlock 1048576
oracle hard memlock 1048576
以K为单位,必须大于sga_max_size,这里设定为1G
#su - oracle
检查limits是否正确
$ulimit -l
1048576
5.重新启动数据库
$sqlplus / as sysdba
SQL>shutdown immediate;
SQL>startup;
SQL>! grep Huge /proc/meminfo
HugePages_Total: 260
HugePages_Free: 24
Hugepagesize: 2048 kB
以上在10.1.0.3 64bit on RHEL4U3 和 10.1.0.3 64bit on FC5上测试通过
说明:
2M的页不要分配超过sga_max_size太多,会造成内存的浪费。
经过测试,对使用文件系统数据库性能有10%-20%的提升,对使用裸设备或ASM的数据库影响较小。
在正式环境已经运行一周,暂时没有发现BUG.
不同平台或不同数据库版本可能存在BUG,可以在测试环境先测试再使用。
- ››linux下两台服务器文件实时同步方案设计和实现
- ››Linux文件描述符中的close on exec标志位
- ››Linux下管道使用的一些限制
- ››Linux 误删/usr/bin 解决方法
- ››linux 添加新用户并赋予sudo执行权限
- ››linux常用软件安装方法
- ››Linux的分区已经被你从Windows中删除,系统启动后...
- ››linux enable命令大全
- ››Linux实现基于Loopback的NVI(NAT Virtual Interfa...
- ››Linux远程访问windows时,出现"连接被对端重...
- ››linux中使用head命令和tail命令查看文件中的指定行...
- ››linux swap 分区调控(swap分区 lvm管理)
赞助商链接