RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Linux) (文档 ID 1525820.1)

RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Linux) (文档 ID 1525820.1)

转到底部转到底部

文档内容


用途

适用范围

详细信息
  RAC 和 Oracle Clusterware 最佳实践和初学者指南(平台无关部分)
  RAC特定平台的最佳实践和初学者指南
  Linux 上 RAC 分步安装说明视频 – 新功能!
  Linux 上 RAC 分步安装说明
  Linux 上 RAC 最佳实践
  OS 配置注意事项
  虚拟化注意事项
  存储注意事项
  通用
  特定于 ASM
  特定于 OCFS2
  网络注意事项
  特定硬件/供应商的注意事项
  Oracle 软件注意事项
  安装
  通用

参考


适用于:

Oracle Database - Enterprise Edition
Linux x86

用途

 

 

最佳实践和初学者指南之 Oracle Real Application Clusters (RAC) 系列,主要目标是为了帮助客户快速了解实施、升级与维护 Oracle RAC 系统的通用的以及针对特定平台的最佳实践。Oracle 根据自己的经验及其全球 RAC 客户的反馈编写和维护本文档。

本初学者指南的目的不在于取代 Oracle 文档集,而是作为它的补充。对于本文没有明确解决的任何问题,还应仔细阅读、理解和参考 Oracle 文档,以从中寻找答案。

您的运营团队应仔细审核所有建议,且只有通过了相应的风险评估后方能实施。风险评估只能由具备丰富的系统、应用和企业环境方面知识的人员来执行。

由于每个客户环境都是独一无二的,因此 Oracle Database 实施(包括 Oracle RAC 实施)的成功源于成功的测试环境。对于本文中的任意建议,在生产环境中加以实施之前,务必要在作为目标生产环境复制品的测试环境中进行充分的测试和验证,以确保不会产生与所实施建议相关的负面影响。

适用范围

本文章适用于所有新的和现有 RAC 实施以及 RAC 升级。

如需特定于 EXADATA 环境的类似信息,请参考: Document 1306791.2 - Information Center: Oracle Exadata Database Machine

 

详细信息

RAC 和 Oracle Clusterware 最佳实践和初学者指南(平台无关部分)

以下文档重点介绍适用于所有平台的 RAC 和 Oracle Clusterware 最佳实践,包括可用的 RAC 系统负载测试工具的白皮书,以及针对 10gR2、11gR1 和 11gR2 的 RAC 的系统测试计划概述:

Document 810394.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Platform Independent)

 

RAC特定平台的最佳实践和初学者指南

以下文档包含特定平台的详细最佳实践,包括分步安装说明(可下载 PDF 格式):

Document 811306.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Linux)
Document 811280.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Solaris)
Document 811271.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Windows)
Document 811293.1 RAC and Oracle Clusterware Best Practices and Starter Kit (AIX)
Document 811303.1 RAC and Oracle Clusterware Best Practices and Starter Kit (HP-UX)

 

Linux 上 RAC 分步安装说明视频 – 新功能!

Document 1442768.1 - RACGuide: 11.2.0.3 RAC Installation on Linux [Video]

 

Linux 上 RAC 分步安装说明

单击 此处,可获取用于在 Linux 上安装 Oracle RAC 10gR2 的分步指南。
单击 此处,可获取用于在 Linux 上安装 Oracle RAC 11gR1 的分步指南。
单击 此处,可获取用于在 Linux 上安装 Oracle RAC 11gR2 (11.2.0.2) 的分步指南。
单击 此处,可获取用于在 Linux 上安装 Oracle RAC 12gcR1的分步指南。

 

Linux 上 RAC 最佳实践

此部分中的最佳实践特定于 Linux 平台。也就是说,请您务必查看 Document 810394.1 中介绍的与平台无关部分的最佳实践。

OS 配置注意事项

  • 如果运行 EL4,则强烈建议应用补丁程序将系统至少升级到 EL 4.7 版本,以免出现以下问题:
    • Bug 6116137 - 避免全局 OS 挂起
    • Bug 6125546 - sysreq 调用无法驱逐节点
    • Bug 5041764 - CFQ IO 调度程序允许一个进程暂时停止其他进程
    • Document 400959.1 - 在版本 RHEL/OEL 4 中,4.4 之前的 e1000 流控制默认处于关闭状态
    • Bug 5136660 - 绑定网卡不通过 primary slave 启动
  • 根据 RAC Technologies Matrix for Linux 验证您的硬件/软件配置。
  • 在 11gR2 之前的集群中,使用 NTPD 跨集群节点同步系统时间, NTPD 应配置为 slew time以防止出现错误重启。在 Linux 上,通过使用“-x”选项启动 ntpd 来完成此项调整。有关 Linux NTPD 配置的详细信息,请参考 Document 551704.1
  • 对于 11gR2,可以使用集群时间同步守护进程 (Cluster Time Synchronization Daemon, CTSSD) 来替代 NTPD。如果发现未配置 NTPD,CTSSD 将以集群中某个节点的时间为基准来同步其它节点时间。如果需要从外部时间源进行同步,则必须使用 NTPD,如果这样,那么 CTSSD 将以“观察者”模式运行。总之,如果 NTP 正在运行,则必须按照 Document 551704.1 所述使用 slew time 选项对其进行配置。
  • Oracle 10gR2 和 11gR1 RAC on Linux 都需要 Hangcheck-timer 内核模块。假设“CSS miscount”的默认设置已设置为 30 或 60 秒,则推荐的 hangcheck-timer 设置是:hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1,请参考 Document 726833.1。对于 11gR2,不再需要 hangcheck-timer,因为此功能已内置于 Grid Infrastructure 中。
  • 为数据库实例实施 HugePage。HugePage 提供了一个使用更大尺寸页面的方法,它会将 SGA lock(锁定)到物理内存,这样就无需进行 SGA 的系统页表查找。这对内存分配较高的系统尤为重要,因为这样能够消除与此类配置相关的管理开销。在服务器稳定性问题较为明显(非 Oracle Clusterware 或其他已知 OS 问题引起的各种死循环/挂起)的环境中,也建议使用 HugePage。要计算尺寸,请参考 Document 401749.1。 有关更多信息,请参考 Document 361323.1。  在 11gR1 和更高版本中,必须禁用 AMM 才能使用 HugePage,如 Document 749851.1 中所述。
  • 在OEL/RHEL 5, 6 , 7 和 Suse 10 及以上版本中关闭 ASLR (Address Space Layout Randomization) 防止进程启动失败。ASLR 是一个新特性加载共享内存到随机地址中。在Oracle中,多个进程共享相同地址的共享内存。开启ASLR后,oracle不能保证共享内存可用。这种冲突意味着一个进程尝试访问特定共享内存,但是无法获得。详细请参考Document 1345364.1

  • 如果您的集群运行在RedHat 6, OEL 6, SLES 11 或 UEK2 内核上,请确认关闭THP(Transparent HugePages)以防止其带来的性能问题导致节点和实例驱逐。
    但是,我们仍然推荐使用一般的HugePages(THP和一般HugePages是不同的)。有关更多信息,请参考Document 1557478.1
  • 设置 vm.min_free_kbytes 内核参数保留 512MB,以允许 OS 更快地回收内存,这样可以避免内存低的压力。有关更多信息,请参考 Document 452326.1Document 452000.1Document 1367153.1
  • 对于内核版本小于等于2.6.18的系统,请设置内核参数vm.swappiness=100。压力测试已经证明,对于内核版本小于等于2.6.18的系统,设置vm.swappiness = 100(默认值为60),能够降低或延缓由于大量的客户端链接或链接风暴导致的严重的内存压力时节点驱逐的发生。
  • 确保已安装所有必要的 32 位和 64 位 OS 包,并已正确满足特定 Oracle 版本的系统先决条件。此信息已记录在Document 169706.1以及特定版本对应的安装指南中。
  • 在 Red Hat、Suse 和 Oracle Enterprise Linux OS 平台上,在应用 10.2.0.4 补丁程序集以后以及在 11g 环境中,可能会在 RAC 中看到 OCSSD 引起的随机节点驱逐。这些随机重启是由于 GLIBC 中的 bug 所致,这已在 EL4.7(及更高版本)和 EL5.2(及更高版本)中得到修正。有关此问题及对应的修正操作的详细信息,请参考 Document 731599.1.
  • 对于 11.2.0.2 之前的安装,必须禁用 SELinux。对于 11.2.0.2,虽然支持 SELinux,但仍然建议在禁用 SELinux 后运行(如果可能)。请参考 Bug 9746474.
  • 禁用 AVAHI 等第三方MDNS守护进程以确保cssd能够正常启动,请参考 Document 1501093.1
  • 对于Linux 6.x 平台,您可能会发现在limits.conf文件中对参数nproc的修改会被忽略-请参考Document 1487773.1获得更多信息。
  • Document 443578.1中所述,配置并测试 Linux 调试选项(Netdump、'Magic' SysRq Key 和 Serial Console)。
    注意: 只有在 RHEL/OEL4.4 或更高版本中,Netdump 才支持绑定接口。

虚拟化注意事项

  • 当使用Paravirtualized (PV) guest 时,Oracle VM 2.1.2 和更高版本支持 RAC on Linux。有关 Oracle VM 上的虚拟化支持的更多信息,请参考 Document 464754.1.
  • 在 Oracle VM 环境中部署 RAC 时,务必查看并遵守 OTN 上的 Oracle RAC in Oracle VM Environments 白皮书中记录的最佳实践

存储注意事项

通用
  • 请参考以下有关如何配置多路径共享存储的文档:
    • Document 564580.1 - Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 on RHEL5/OEL5
    • Document 605828.1 - Configuring non-raw multipath devices for Oracle Clusterware 11g on RHEL5/OEL5
      注意:  Document 605828.1 同样适用于在不使用 ASMLib 的情况下为 11gR2 安装配置多路径。有关 ASMLib 特定的说明,请参考下文的 ASMLib 部分。
  • 在 RedHat EL4 或更高版本中,建议设置 aio-max-nr=1048576( 11g 中设置为 4194304)。
  • 从 Linux 2.6 内核 (RHEL 5, OEL 5) 开始,将逐步淘汰裸设备,以支持对块设备进行 O_DIRECT 访问。有关此问题的详细信息,请参考 Document 401132.1
    • 从 11gR2 开始,对裸设备和/块设备的支持仅为实现向后兼容(在所有平台上),请参考Document Note: 754305.1了解详细信息。
  • 在 OCFS2 上,为 OCR/VOTING 磁盘正确配置超时(设置应满足:O2CB_HEARTBEAT_THRESHOLD>=((max(HW_STORAGE_TIMEOUT, SW_STORAGE_TIMEOUT) / 2) + 1))。请参考 Document 395878.1

 

特定于 ASM
  • 使用 ASMLib 可以方便管理,同时 ASMLib Async I/O 驱动程序可以提供更好的性能。
注意: 对于 RHEL6(从6.4开始),内核驱动软件包'kmod-oracleasm'已经在 Redhat 平台上启动,并且可以通过RedHat Network (RHN)上的"RHEL Server Supplementary (v. 6 64-bit x86_64)" 渠道进行安装。这个模块的更新将会由 RedHat 提供。更多的信息请参考文档 1089399.1。

 在多路径环境下使用 ASMLib 时,确保已正确配置 ASMLib,以便多路径设备可用于访问对应的设备。通过编辑 /etc/sysconfig/oracleasm 配置文件和修改 ORACLEASM_SCANORDER 以包括 /proc/partitions 中的有效前缀条目(如“dm”、“emcpower”),即可实现这一点。常见的错误配置是将 ORACLEASM_SCANORDER 设置为“/dev/mapper/”。“/dev/mapper:”是别名,存在于 /proc/partitions 中。请参考 Document 602952.1 了解详细信息。

  • 如果使用或无法使用 ASMLib,请参考 Document 357472.1 获取如何配置 UDEV 和(或)Device Mapper 的指南以管理 Clusterware 和 ASM 设备。
  • 在Linux 7 的系统上使用FCOE 和ASMLib ,请确保FCOE的服务已经启动 . 请参考 Document 2065945.1 和 Document 2043733.1
特定于 OCFS2
  • 一般而言,不鼓励在 RAC 系统上使用 OCFS2,因为它会使集群变得更复杂。在 RAC 系统上使用 ASM 是目前和将来发展的方向,强烈建议将其作为最佳实践。
  • 发生 Node Panic 或节点驱逐后,OCFS2 1.2.7-1 会使 OCFS2 文件系统变得不可访问。建议用户尽快升级到 OCFS2 1.2.8-2。请参考Document 553600.1 - "OCFS2 1.2.7-1 Filesystem May Become Unavailable after Node Panic or Eviction".
  • 对于包含 voting disk 文件 (Clusterware)、集群注册表 (OCR)、数据文件、Redo(重做)日志、归档日志和控制文件的 OCFS2 卷,必须使用data volume 和 nointr选项进行 mount。
  • 在低于 OCFS2 1.4.x 的版本中,OCFS2 不支持共享的可写入 mmap。在使用 1.4.x 版之前的所有 OCFS2 时,健康状况检查 (GIMH) 文件 $ORACLE_HOME/dbs/hc_ORACLESID.dat 和 ASM 文件 $ASM_HOME/dbs/ab_ORACLESID.dat 应使用符号链接把文件映射到本地文件系统。
  • 对 OCFS2 通信使用专用私有网络,以免网络延迟被误解为节点在网络上消失,这样将出现 Node-self-fencing 的情况。可以对 Oracle RAC 和 OCFS2 使用相同的私有网络。请参考  Document 603080.1Document 391771.1。进行此更改时,保留 OCFS2 节点名称作为公共节点名称,唯一要做的是更改 IP 地址,以反映专用私有 IP。
  • 确保不对 OCFS 分区运行 /usr/bin/updatedb (aka /usr/bin/locate, slocate)。Updatedb 是文件索引器,将会降低 OCFS 文件 I/O 的性能。为防止 updatedb 建立 OCFS 分区的索引,请将“ocfs”添加到 PRUNEFS= 中,并(或)专门在 /etc/updatedb.conf 的 PRUNEPATHS 列表中列出 OCFS 卷。请参考 Document 789946.1.
  • 强烈建议避免将表决磁盘和 OCR 存储在 OCFS2 文件系统上,应当尽量避免出现这种情况。如果要求对 OCR 文件和(或)VOTING disk使用 OCFS2,请查看 Document 395878.1 - "Heartbeat/Voting/Quorum Related Timeout Configuration for Linux, OCFS2, RAC Stack to avoid unnecessary node fencing, panic and reboot".

网络注意事项

  • 根据工作负载,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)
_default 值确定在创建 socket 时为每个 socket 立即消耗多少内存。_max 值确定在内存要求超过默认值时,允许每个 socket 动态使用多少内存。因为,建议的最佳实践是定义较低的默认值(即 256k)以尽可能节省内存,但设置较大的最大值(1MB 或更大)以便在给定的 socket 需要更多内存时获得更高的网络性能。
  • 在实施 Linux 网卡绑定时,必须避免模式 3(对于私网)或模式 6(对于私网和公网):
    • 针对私网进行的模式 3 测试证明它会复制所有 UDP 包并在每一条路径上传输。这样会增加 CPU 处理私网数据的开销,从而导致私网效率降低。模式 3 绑定所导致的重复 UDP 包已经造成非公开 Bug 7238620 (ORA-600 [2032]) 和 非公开 Bug 9081436 (GC CR REQUEST WAIT CAUSING SESSIONS TO WAIT)。尽管模式 3 的已知问题只存在于私有网络中,但基于上面提到的模式 3 效率低下的问题,也不鼓励对公共网络使用模式 3。
    • 模式 6 绑定与浮动 IP 地址之间存在固有的竞争会导致 VIP、SCAN VIP 和 HAIP 出现故障漂移问题。
  • 如果集群中需要使用ACFS,我们需要使用Linux上的绑定模式0或者是模式1。 如 bug 23011023中描述的其它所有的模式都会引发稳定性的问题。
  • 使用 NSCD 缓存 LINUX 的 NIS 查找 – 检查以确保 NSCD 服务已安装且正在运行(可以在 RDA 中找到相关信息)。
  • 确保禁用 Linux 防火墙 (iptables)。这对私有网络尤为重要,因为此选项会导致集群不稳定。请参考 Document 554781.1 了解详细信息。
  • 对于 Linux Kernels 2.6.31 (包含,如:Oracle Linux和Red Hat ) 和更高版本,已经修正了 Reverse Path Filtering 中的一个 bug。由于此 bug 的修正,可能会在拥有多个私网的系统上产生数据包阻止/丢弃的情况。为避免出现这种情况,请将私网网卡的 rp_filter 内核参数设置为值 0(禁用)或 2(宽松)。有关更多信息,请参考 http://docs.oracle.com/database/121/CWLIN/networks.htm#CWLIN481或Document 1286796.1.

特定硬件/供应商的注意事项

  • 在运行 bnx2 网络驱动程序的 EL5(RHEL 和 OEL)系统上,请确保最低已使用内核版本 2.6.18-194.8.1(EL5.5 或更高),以免出现网络不稳定的问题。有关 BZ#587799、BZ#581148 的详细信息,请参考 https://rhn.redhat.com/errata/RHSA-2010-0398.html
  • 对于 ECC 内存检查,请确保 SUN V40Z DUAL CORE 机器最低使用 BIOS 版本为 2.35.3.3。
  • 确保没有 SUN V40Z 2.6V 内存管理电压调节问题。SUN CE 能够发现电压调节是否开始出现问题。新的 VRM(电压调节模块)修订版本已从 1.0 升至 2.0。

Oracle 软件注意事项

此部分中的软件注意事项特定于 Linux 平台。也就是说,强烈建议查看 Document 810394.1 中介绍的平台无关部分的最佳实践。

安装

  • 确保已禁用 Linux 防火墙 (iptables),以防止 root.sh 失败。请参考 Document 554781.1 了解详细信息。
  • 对于 11.2.0.2 之前的安装,通过禁用 SELinux 可以防止 root.sh 失败。对于 11.2.0.2,虽然支持 SELinux,但仍然建议在禁用 SELinux 后运行(如果可能)。请参考 Bug 9746474
  • 在 SLES 上,安装 11.2.0.2 将在执行 root.sh 期间复制 ohasd.sles 时会失败: Bug 10428946

    Performing root user operation for Oracle 11g
    ...
    The init script file "/u01/app/11202/grid/crs/init/ohasd.sles" does not exist
    ...
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Bug 10428946 的解决方法是将 ohasd.sles 从 $GI_HOME/crs/util 目录手动复制到 $GI_HOME/crs/init 目录:
# cp $GIHOME/crs/utl/ohasd.sles $GIHOME/crs/init
注意: 此问题将在 11.2.0.2.4 GI PSU 中修正,目前已在 11.2.0.3 中得到修正。
 

通用

  • 对于 10gR2 和 11gR1 安装,验证 oradism 可执行文件是否与所有权和权限 "-rwsr-sr-x 1 root dba oradism" 匹配,并确保 lms 正在实时模式下运行。

参考


NOTE:1442768.1 - RACGuide: 11.2.0.3 RAC Installation on Linux [Video]
NOTE:811303.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (HP-UX)
NOTE:811306.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Linux)
NOTE:1487773.1 - Cannot Increase "nproc" Value More Than 1024 in Oracle Linux 6
NOTE:605828.1 - Configuring non-raw multipath devices for Oracle Clusterware 11g (11.1.0, 11.2.0) on RHEL5/OL5
NOTE:564580.1 - Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5/OL5
NOTE:602952.1 - How To Setup ASM & ASMLIB On Native Linux Multipath Mapper disks?
NOTE:361323.1 - HugePages on Linux: What It Is... and What It Is Not...
NOTE:603080.1 - Linux OCFS2 - Best Practices
NOTE:811280.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Solaris)
NOTE:357472.1 - Configuring device-mapper for CRS/ASM
NOTE:749851.1 - HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux
NOTE:551704.1 - Linux OS Service 'ntpd'
NOTE:391771.1 - OCFS2 1.2 - FREQUENTLY ASKED QUESTIONS
NOTE:726833.1 - Linux: Hangcheck-Timer Module Requirements for Oracle 9i, 10g, and 11gR1 RAC


NOTE:554781.1 - RAC instabilities due to firewall (netfilter/iptables) enabled on the cluster interconnect
NOTE:731599.1 - Linux: OCSSD Reboots Nodes Randomly After Application of 10.2.0.4 Patchset and in 11g Environments
NOTE:395878.1 - Heartbeat/Voting/Quorum Related Timeout Configuration for Linux, OCFS2, RAC Stack to Avoid Unnecessary Node Fencing, Panic and Reboot
NOTE:810394.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Platform Independent)
BUG:5136660 - RHEL4 [U4] BONDING DEVICE DOES NOT COME WITH PRIMARY SLAVE
BUG:9081436 - GC CR REQUEST WAIT CAUSING SESSIONS TO WAIT
BUG:5041764 - CFQ IO SCHEDULER ALLOWS ONE PROCESS TO TEMP STARVE OTHER PROCESSES
NOTE:237997.1 - Linux OCFS - Best Practices
NOTE:169706.1 - Oracle Database (RDBMS) on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2)
NOTE:811293.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (AIX)
NOTE:811271.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Windows)
NOTE:553600.1 - OCFS2 1.2.7-1 Filesystem May Become Unavailable after Node Panic or Eviction
BUG:9746474 - SELINUX IS PREVENTING "EXECMOD"
NOTE:400959.1 - LINUX: POOR RAC-INTERCONNECT PERFORMANCE AFTER UPGRADE FROM RHEL3 TO RHEL4/OEL4

NOTE:401132.1 - Pre-11.2: How to Install Oracle Clusterware with Shared Storage on Block Devices
NOTE:401749.1 - Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration
NOTE:2065945.1 - Oracle Linux 7: ASM Disks Created on FCOE Target Disks are Not Visible After System Reboot
NOTE:2043733.1 - Oracleasm Is Not Showing ASM Disks After Reboot
请使用浏览器的分享功能分享到微信等