linux大页开启和以及SGA标准配置

此文章面向Redhat 6环境下的oracle 11g版本数据库~
在64G主机内存的情况下,建议ORACLE内存设置如下(PGA一般设置为SGA的20%):

SGA	25G
PGA	5G
SHARED_POOL	5G

以上参数设置相对保守,可以自行决定具体参数设置范围,但是40%OS_Mem<SGA+PGA内存<60%OS_Mem 并且确保主机交换空间充足(如果一个主机上双实例的话,则是两个实例的SGA+PGA内存在40%~60%之间)

大页开启(先调整SGA和PGA再计算大页)
HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。尤其是对于8GB以上的数据库内存以及较大的Oracle SGA size,建议配值并使用HugePage特性。
调整数据库sga大小:

alter system set sga_max_size=<n>G scope=spfile sid='*';
alter system set sga_target=<n>G scope=spfile sid='*';

调整数据库pga大小(初始设置为SGA的20%,后续通过AWR报告或者语句更改合适值):

alter system set pga_aggregate_target=<n>G scope=spfile sid='*';

关闭AMM管理:

alter system set memory_max_target=0G scope=spfile sid='*';
alter system set memory_target=0G scope=spfile sid='*';

或者

alter system reset memory_max_target;
alter system reset memory_target;

重启数据库生效

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

使用Oracle 提供的脚本hugepages_settings.sh的脚本来计算vm.nr_hugepages的值。在执行脚本之前确保所有的Oracle 实例已启动以及ASM也启动(存在的情形下)
脚本内容如下( Kernel Version 2.6 before)使用命令uname -r查看内核版本

vi hugepages_settings.sh
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage
NUM_PG=1
# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"`
do
   MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
   if [ $MIN_PG -gt 0 ]; then
      NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
   fi
done
# Finish with results
case $KERN in
   '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
          echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
   '2.6'|'3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    *) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac
# End

编辑/etc/sysctl.conf ,设置vm.nr_hugepages参数

# vi /etc/sysctl.conf
  vm.nr_hugepages=1496

执行sysctl -p 命令使以上设置生效

编辑/etc/security/limits.conf 配置文件 ,修改用户的memlock限制。
memlock值应该为:大页数适当增加一些*Hugepagesize。
查询Hugepagesize值:

grep Huge /proc/meminfo |grep Hugepagesize

计算如下:

(1496+5)* 2048= 3074048
# vi /etc/security/limits.conf
* soft memlock 3074048
* hard memlock 3074048

重启实例

SQL> shutdown immediate
SQL> startup

验证配置

 # grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 306  (总共306页)
HugePages_Free: 306   (空闲306页,已使用306-306=0页)
HugePages_Rsvd: 0     (操作系统承诺给oracle预留的页数)
HugePages_Surp: 0
Hugepagesize: 2048 kB  (每页2M,固定值)

上述情况说明大页已经开启,但是并未使用。

若是大页未配置完成或正确启动实例时alert日志会有以下提示
在这里插入图片描述
如果配置不正确的话,日志下方会有建议值叫你调整。

好啦,以上就是Redhat6下的oracle11g版本大页标准配置流程了,大家快去试试吧!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值