这篇文章以实际为客户部署Oracle 11gR2 RAC为例,探讨实施过程中对软硬件产品兼容性和Oracle Database最佳实践的关注,个人觉得这两点非常的重要。
客户的硬件是两台IBM X3850,操作系统采用Oracle Linux,存储是EMC。这篇文章仅讨论服务器与操作系统的兼容性,其他软硬件兼容性不在这篇文章讨论。
我们首先应该考虑的就是IBM X3850与Oracle Linux的兼容性问题,这关系到我们装什么版本的操作系统。下面是IBM X3850的兼容性列表:


由于Redhat Linux和Oracle Linux内核和软件基本是一致的,IBM并没有针对Oracle Linux提供兼容性列表,所以这里我们参考for RedHat Linux的兼容性内容。
从上面的列表中可以很清晰的看到,IBM X3850 X6和Red Hat Enterprise Linux 5 Server x64 Endition已经不兼容了,换句话说,我们不能再在X3850上安装Oracle Linux 5的操作系统,所以考虑到操作系统的发布时间和Oracle产品的发布时间,最终我们选择了Oracle Linux Enterprise x86_64bit 6.4版本的操作系统。
针对IBM X系列服务器的兼容性列表可以参考如下的页面:
http://www-03.ibm.com/systems/info/x86servers/serverproven/compat/us/nos/redchat.html
http://www-03.ibm.com/systems/info/x86servers/serverproven/compat/us/nos/matrix.shtml
http://www-03.ibm.com/systems/info/x86servers/serverproven/compat/us/indexsp.html
http://www-03.ibm.com/systems/info/x86servers/serverproven/compat/us/
到目前为止还很少在Oracle Linux 6上部署Oracle RAC,更多的还在使用Oracle Linux 5,所以当然要好好的看看Oracle RAC for Linux的最佳实践:
《RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Linux) (Doc ID 1525820.1)》
考虑到篇幅和该文会不断的更新,这里不转载该文的内容,只将在部署过程中发现的Oracle Linux 5和Oracle Linux 6的差别列出来:
1.如果您的集群运行在RedHat 6, OEL 6, SLES 11 或 UEK2 内核上,请确认关闭THP(Transparent HugePages)以防止其带来的性能问题导致节点和实例驱逐。
但是,我们仍然推荐使用一般的HugePages(THP和一般HugePages是不同的)。有关更多信息,请参考 Document 1557478.1 。
通过在操作系统的/etc/rc.local文件中加入以下的内容来关闭THP:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
2.设置 vm.min_free_kbytes 内核参数保留 512MB,以允许 OS 更快地回收内存,这样可以避免内存低的压力。有关更多信息,请参考 Document 452326.1 , Document 452000.1 和 Document 1367153.1 。
通过在/etc/sysctl.conf文件中加入以下内容:
vm.min_free_kbytes=524288
另外还需要注意:对 于内核版本小于等于2.6.18的系统,请设置内核参数vm.swappiness=100。压力测试已经证明,对于内核版本小于等于2.6.18的系 统,设置vm.swappiness = 100(默认值为60),能够降低或延缓由于大量的客户端链接或链接风暴导致的严重的内存压力时节点驱逐的发生。
3.对于Linux 6.x 平台,您可能会发现在limits.conf文件中对参数nproc的修改会被忽略-请参考 Document 1487773.1 获得更多信息。
通过在/etc/security/limits.d/90-nproc.conf修改成如下内容来实现对nproc的限制:
* soft nproc 16384
root soft nproc unlimited
4.在 RedHat EL4 或更高版本中,建议设置 aio-max-nr=1048576( 11g 中设置为 4194304)。
5.根据工作负载,rmem_max 和 wmem_max 内核参数应增加到超过默认值 256kb。这些值可确定为每个打开的 socket 分配多少内核缓冲区内存进行网络读取和写入:
net.core.rmem_default=262144
net.core.rmem_max=4194304 (for 11g and all RDS implementations)
net.core.rmem_max=2097152 (for 10g)
net.core.wmem_default=262144
net.core.wmem_max=1048576 (with RDS use at least 2097152)
这里多说一句,对于11.2.0.2以上的Oracle RAC,我们应该考虑在每台服务器上启用4个HAIP,和对心跳网络使用Jumbo Frames来提供心跳的性能,这点同样的重要!
有关Jumbo Frames巨型帧的内容可以参考以下两篇文章:
http://blog.itpub.net/23135684/viewspace-752040/
《Recommendation for the Real Application Cluster Interconnect and Jumbo Frames (Doc ID 341788.1)》
6.对 于 Linux Kernels 2.6.31 和更高版本,已经修正了 Reverse Path Filtering 中的一个 bug。由于此 bug 的修正,可能会在拥有多个私网的系统上产生数据包阻止/丢弃的情况。为避免出现这种情况,请将私网网卡的 rp_filter 内核参数设置为值 0(禁用)或 2(宽松)。有关更多信息,请参考 Document 1286796.1 .
通过在/etc/sysctl.conf文件中加入如下的内容来避免出现此bug:
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth3.rp_filter = 0
net.ipv4.conf.eth5.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
此次部署我们为客户选择的是Oracle 11.2.0.4.0 RAC Database,以上只是节选了部分最佳实践中的内容,详细的内容还应完整的参考《 RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Linux) (Doc ID 1525820.1) 》。
通过这篇文章我想说明两点,一是软硬件的兼容性非常的重要,发布时间相差很大的两个产品(软硬件)之间很可能是不兼容的,例如,采购新的硬件应该安装较新的操作系统来支撑它,随之数据库软件也应该选择匹配的版本(发布事件相近,查看产品 兼容性列表支持),这是操作系统和Oracle产品稳定运行的基石 。二是Oracle发布的最佳实践,这点同样重要,这是大量工程师在实践过程中总结出来的经验,精华所在,参考最佳实践进行部署能够进一步的保证Oracle数据库系统的稳定、高效,是数据库工程师的一个好习惯。
--end--
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23135684/viewspace-1460008/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23135684/viewspace-1460008/