26 Dec 2016
yum groupinstall base core -y yum install -y cloog-ppl libXxf86misc compat-libcap1 libXxf86vm compat-libstdc++-33 libaio-devel cpp libdmx gcc libstdc++-devel gcc-c++ mpfr glibc-devel make glibc-headers ppl kernel-headers xorg-x11-utils libXmu xorg-x11-xauth libXt libXv ksh libXxf86dga
setenforce 0 vim /etc/selinux/config ****************************************************** SELINUX=disabled ******************************************************
vim /etc/sysconfig/iptables ****************************************************** # Generated by iptables-save v1.4.7 on Fri Dec 23 09:17:06 2016 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [25:2660] # 允许public网络每个节点的ip通过bond0连接 -A INPUT -s 172.168.33.103/32 -i bond0 -j ACCEPT -A INPUT -s 172.168.33.104/32 -i bond0 -j ACCEPT # 允许private网络每个节点的网卡设备的所有连接 -A INPUT -i eth3 -j ACCEPT -A INPUT -i eth4 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # 允许private网段到Oracle's Multicast address IPs: 230.0.1.0 and 224.0.0.251的连接 -A INPUT -s 172.16.44.0/24 -d 230.0.1.0 -j ACCEPT -A INPUT -s 172.16.48.0/24 -d 224.0.0.251 -j ACCEPT -A INPUT -s 172.16.44.0/24 -d 230.0.1.0 -j ACCEPT -A INPUT -s 172.16.48.0/24 -d 224.0.0.251 -j ACCEPT # 允许bond0到Oracle's Multicast address IPs: 230.0.1.0 and 224.0.0.251的连接 -A INPUT -i bond0 -d 230.0.1.0 -j ACCEPT -A INPUT -i bond0 -d 224.0.0.251 -j ACCEPT # 允许ssh/https端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT # Enable Oracle SCAN Listener Port 1521 for Oracle DB client access -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.33.121 --dport 1521 -j ACCEPT # Enable Oracle Enterprise Manager 11g Port 1158 for Oracle DB client access -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.33.121 --dport 1158 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT ******************************************************
需要调节内核的5个参数来调优虚拟内存,虚拟内存被用于oracle rac集群内部。特别需要注意的是,以下推荐的值只是调优的一个起点。
以下是虚拟内存调优参数的简单介绍和建议值:
## 集群中各节点上执行 # 备份原配置文件 cp /etc/sysctl.conf /etc/sysctl.conf.bak # 修改配置优化虚拟内存设置 vim /etc/sysctl.conf ****************************************************** vm.swappiness = 0 vm.dirty_background_ratio = 3 vm.dirty_ratio = 80 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 ****************************************************** # 使配置立即生效 sysctl -p
共享内存允许进程间通过将内存区域放置到内存段中来彼此通信。在oracle这里,共享内存被System Global Area (SGA)拿来存储输入数据和控制信息。Oracle SGA的大小影响要在系统中设置的共享内存页和共享内存段的数量。默认情况下,RHEL6会提供一个很大的共享内存页数和共享内存段数,然而,一个系统在此方面合适的分配数量还是取决于RAM的大小。为了在oracle集群节点上分配合适的共享内存,我们需要优化以下三个参数。
在oracle集群的节点中,为了在每个系统的内存页容量(bytes)中决定共享内页的数量,以下这个命令会帮助我们获得系统的内存页数量。
getconf PAGE_SIZE
4096
接下来我们计算三个参数的值
# 计算SHMALL公式:TOTAL RAM IN BYTES / PAGE_SIZE echo "`cat /proc/meminfo |awk '/MemTotal/{print $2}'` * 1024 / `getconf PAGE_SIZE`" | bc 125486 # 计算SHMMAX公式:HALF OF TOTAL RAM IN BYTES echo "`cat /proc/meminfo |awk '/MemTotal/{print $2}'` * 1024 / 2" | bc 256995328 # 至于SHMMNI, Oracle 推荐设置 SHMMNI 为 4096.
特别需要注意的是,如果你发现
/etc/sysctl.conf中的值大于自己计算的值,请不要改动此项参数。
最终,发现系统配置的shmall和shmmax都要比自己计算的大,于是不改动这两个参数,只需要添加shmmni即可
# 最终编辑参数为 vim /etc/sysctl.conf ****************************************************** kernel.shmmax = 68719476736 kernel.shmall = 4294967296 kernel.shmmni = 4096 ****************************************************** # 使其立即生效 sysctl -p
RHEL6 提供了semaphores(信号量)用于在进程间同步信息。内核参数sem由以下4个部分组成
设置以下的参数来确保oracle集群节点拥有足够的信号量
# 在/etc/sysctl.conf中配置 vim /etc/sysctl.conf ****************************************************** kernel.sem = 250 32000 100 128 ****************************************************** # 使其立即生效 sysctl -p
oracle推荐设置此项来确保oracle和其他应用默认的端口被避开,推荐设置为
# 在 /etc/sysctl.conf 中增加 vim /etc/sysctl.conf ****************************************************** net.ipv4.ip_local_port_range = 9000 65500 ****************************************************** # 使其立即生效 sysctl -p
oracle通过设定RMEM和WMEM,来优化应用程序sockets的缓存默认值和缓存最大值。
oracle做如下推荐
# /etc/sysctl.conf vim /etc/sysctl.conf ****************************************************** net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 ****************************************************** # 使其立即生效 sysctl -p
内核参数FS.AIO-MAX-NR设定当前异步I/O请求的最大数量。
oracle推荐如下设置
# /etc/sysctl.conf vim /etc/sysctl.conf ****************************************************** fs.aio-max-nr = 1048576 ****************************************************** # 使其立即生效 sysctl -p
内核参数FS.FILE-MAX设置分配给Red Hat Enterprise Linux 6操作系统的打开文件句柄的最大数目,oracle推荐在RHEL6操作系统已分配的数目之外,额外增加512 * PROCESSES,数据库实例中的PROCESSES指的是Oracle用户可以并发连接到Oracle RAC数据库的最大进程数。PROCESSES默认值是150.
# 如何获取当前的最大文件打开数 cat /proc/sys/fs/file-max 46892 # 参考每个服务器拥有一个oracle database instance,两个服务器就是150 * 2 # 计算FS.FILE-MAX echo "`cat /proc/sys/fs/file-max` + $[512*300]" | bc 200492
需要注意的是,因为目前还没有创建oracle rac database cluster,可以暂时使用150 PROCESSES,可以在增加oracle database instance之后再行调整。
然而,FS.FILE-MAX的值,oracle推荐不低于6815744,因为我们计算的值小于此值,所以最终,我们将其设置为6815744
# 修改内核配置文件/etc/sysctl.conf vim /etc/sysctl.conf ****************************************************** fs.file-max = 6815744 ****************************************************** # 使其立即生效 sysctl -p
需要注意的是,oracle ASMLib不是根据每个设备来打开文件描述符,而是为每个oracle进程来打开文件描述符。在oracle rac database cluster安装期间,FS.FILE-MAX内核参数最小设置为6815744
当我们因为oracle RAC database instances增加而增加PROCESSES的值时,需要重新调整FS.FILE-MAX的值
RHEL6默认使用严格的反向路径过滤。之所以默认使用严格模式是因为预防DDOS的ip欺骗攻击。然而,开启此模式有时会引起互联通信的中断。所以推荐设置RP_FILTER将严格模式切换到松散模式。不需要太多的关注切换到松散模式所带来的安全问题,因为独立的private网络只能在oralce cluster节点之间通信。
# 编辑/etc/sysctl.conf vim /etc/sysctl.conf ****************************************************** net.ipv4.conf.eth3.rp_filter = 2 net.ipv4.conf.eth4.rp_filter = 2 ****************************************************** # 使其立即生效 sysctl -p