对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:我的环境:OS:CentOS release 6.4 (Final)Oracle:11.2.0.4 RACOracle 大内存需要配置HugePage http://www.linuxidc.com/Linux/2014-03/98988.htm在Oracle 11.2.0.3.0上开启大页(HugePages)的详细解析 http://www.linuxidc.com/Linux/2014-02/96787.htmLinux HugePages及MySQL 大页配置 http://www.linuxidc.com/Linux/2013-08/88227.htmLinux HugePage 特性 http://www.linuxidc.com/Linux/2013-04/82504.htm1. 设置memlock编辑/etc/security/limits.conf增加:* Soft memlock 稍小于RAM值* hard memlock 稍小于RAM值Memlock值大于sga没关系的,所以我们可以设置这个值在我们想要的SGA size和物理内存size之间,这个值得单位是kb。[root@node1 ~]# grep -i memtot /proc/meminfoMemTotal: 132250576 kB我们物理内存大小126G,因此我可以设置memlock为100G。在2个节点设置:[root@node1 ~]# tail -2 /etc/security/limits.conf* soft memlock 104857600* hard memlock 104857600设置完毕后,以Oracle用户登录验证:node2-> ulimit -l1048576002. 禁用AMM特性:禁用AMM特性需要将memory_max_target, memory_max_target2个参数重置,而不仅仅是设置为0,最好的办法是创建一个pfile,在pfile中将这2个参数删除,再根据这个pfile创建spfile.主要内存参数设置为:node1->node1-> grep target /tmp/init.ora*.pga_aggregate_target=1572864000*.sga_target=64424509440SQL> create spfile from pfile="/tmp/init.ora"; File created. SQL> startup forceORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceAdditional information: -134217728Additional information: 1SQL>出现这个报错是因为shmall设置的太小。Shmall表示共享内存的总大小,单位为pagesize的大小。根据我的配置,最大能支持8G的SGA:node1-> getconf PAGE_SIZE4096node1-> cat /proc/sys/kernel/shmall2097152修改shmall并重新启动数据库,修改的方法很简单,编辑/etc/sysctl.conf:kernel.shmall= 16252928即可。修改完毕kernel.shmall,此时可以重启数据库。SQL> startup nomount pfile="/tmp/init.ora"; ORACLE instance started. Total System Global Area 6.4137E+10 bytesFixed Size 2269072 bytesVariable Size 6979321968 bytesDatabase Buffers 5.7043E+10 bytesRedo Buffers 112762880 bytesSQL>SQL>DB启动后重新创建spfile:SQL> create spfile="+OCR/sszgdb/spfilesszgdb.ora" from pfile="/tmp/init.ora"; File created. SQL>3. 根据Oracle的脚本计算hugepage大小(计算时要确保Oracle已经启动),也可自己计算: Press Enter to proceed... Recommended setting: vm.nr_hugepages = 30739node1->4. 根据脚本的计算值在2个节点编辑/etc/sysctl.conf加入vm.nr_hugepages = 30739[root@node2 ~]# grep -i huge /proc/meminfoAnonHugePages: 602112 kBHugePages_Total: 30739HugePages_Free: 30739HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB停止数据库实例5. 重启服务器,一般重启服务器之后DB也自动启动了。服务器和DB重启后可以通过以下命令验证大页的使用情况:grep -i Hugepages /proc/meminfo此时查看Oracle的alert日志,也可以发现:Starting ORACLE instance (normal)************************ Large Pages Information *******************Per process system memlock (soft) limit = UNLIMITED Total Shared Global Region in Large Pages = 58 GB (96%) Large Pages used by this instance: 29761 (58 GB)Large Pages unused system wide = 24 (48 MB)Large Pages configured system wide = 30739 (60 GB)Large Page size = 2048 KB RECOMMENDATION: Total System Global Area size is 60 GB. For optimal performance, prior to the next instance restart: 1. Increase the number of unused large pages by at least 936 (page size 2048 KB, total size 1872 MB) system wide to get 100% of the System Global Area allocated with large pages可以发现sga并没有全部放在大页里,这样可能对性能带来负面影响,Oracle建议我们再加入936个大页,可见Oracle的大页脚本计算并不准确,我们需要增加大页数量,并设置参数Use_large_pages=only,该参数确保Oracle的共享内存全部使用大页。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-10/108467p2.htm
MySQL子查询慢现象的解决CentOS 6.4下让Oracle开机启动相关资讯 HugePage
- 为Linux版本Oracle 11gR2配置 (03月04日)
- Oracle 大内存需要配置hugepage (03/27/2014 16:34:26)
| - 让你的 PHP 7 更快之 Hugepage (10/02/2015 09:44:52)
- Linux HugePage 特性 (04/10/2013 09:38:07)
|
本文评论 查看全部评论 (0)