内存调整后Oracle相关配置

该脚本主要针对Oracle环境进行内存配置调整,包括设置/dev/shm的大小以适应内存的60%,调整kernel参数如SHMALL和SHMMAX以优化内存使用,以及配置大页(hugepages)的数量。同时,它还会更新sysctl.conf和limits.conf文件以设定系统和用户限制。
摘要由CSDN通过智能技术生成

内存调整后Oracle相关配置

# 调整shm
echo '#!/bin/bash'>/tmp/shm.sh
cat >>/tmp/shm.sh<<shm
echo "# 设置 /dev/shm:\$(hostname),如小于内存的60%,则调整到等同内存大小"
shmsizegb=\$(echo "scale=0;\$(df -PmT /dev/shm | grep shm | awk '{print \$3}')/1024" | bc)
# swapgb=\$(echo "scale=0;\$(grep SwapTotal /proc/meminfo | awk '{print \$2}')/1024/1024" | bc)
# memgb=\$(echo "scale=0;\$(grep MemTotal /proc/meminfo | awk '{print \$2}')/1024/1024" | bc)
swapgb=\$(grep SwapTotal /proc/meminfo | awk '{printf "%.0f",\$2/1024/1024}')
memgb=\$(grep MemTotal /proc/meminfo | awk '{printf "%.0f",\$2/1024/1024}')
mingb=\$((\$memgb*6/10))
if [ \$shmsizegb -lt \$mingb ]; then
    echo "# resize /dev/shm to \${memgb}G"
    sed -i '/\/dev\/shm/d' /etc/fstab
    echo "tmpfs    /dev/shm    tmpfs    defaults,size=\${memgb}G,noatime,nodiratime    0 0" >>/etc/fstab
    mount -o remount /dev/shm
else
    echo "# /dev/shm equal to MemTotal(${memgb}GB), Now \$(df -h | grep /dev/shm | awk '{print $2}')"
fi
shm
chmod +x /tmp/shm.sh;sh /tmp/shm.sh

# 调整 kernel
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM=$((($memTotal - 1) * 1024))
SHMALL=$(($MEM / $(getconf PAGE_SIZE)))
SHMMAX=$(($MEM)) # 这里配置为 90% RAM大小
min_free_kbytes=$(($memTotal*4/1000))
# shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的个数)
if [ $SHMALL -lt 2097152 ]; then ## 2097152*4k/1024/1024=8G
    SHMALL=2097152
fi
SHMMAX=$((memTotal * 1024 - 1))
if [ "$SHMMAX" -lt 4294967295 ]; then ## 4294967295k/1024/1024=4095MB
    SHMMAX=4294967295
fi
sed -i '/kernel.shmall/d' /etc/sysctl.conf
sed -i '/kernel.shmmax/d' /etc/sysctl.conf
sed -i '/vm.min_free_kbytes/d' /etc/sysctl.conf
echo "kernel.shmall = $SHMALL
kernel.shmmax = $SHMMAX
vm.min_free_kbytes = $min_free_kbytes">>/etc/sysctl.conf
sed -i '/memlock/d' /etc/security/limits.conf
echo "@oinstall     soft   memlock  unlimited
@oinstall     hard   memlock  unlimited" >>/etc/security/limits.conf

sysctl -p
sysctl --system

# 大页配置调整需要首先计算大页大小
huge=
if [ -z $huge ];then
    exit 1
fi
sed -i '/vm.nr_hugepages/Id' /etc/sysctl.conf
echo "vm.nr_hugepages = $huge" >> /etc/sysctl.conf
sysctl -p
sysctl --system

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值