在布署Oracle RAC集群时,我们经常会遇到各种各样奇怪的问题,即使老马也可能失蹄。因此我将一些平时布署时需要注意的点收集并记录了下,以供参考。
Oracle RAC布署时的注意事项
一、网络注意事项
1.1,对于私网,强烈推荐使用万兆以太网,至少需要使用千兆以太网。
1.2,根据 RFC952-DoD 主机列表说明,在主机名或域名中不使用下划线。这条规则也适用于 Net(网络)、Host(主机)、Gateway(网关)或 Domain(域名)。
1.3,VIP 和 SCAN VIP 应与公网在同一个子网上;
默认网关必须与 VIP(包括 SCAN VIP)在同一个子网上,以防止出现 VIP 启动/停止/故障转移问题。在 11gR2 中,OUI 会检测出并报告此问题,如果忽略检查,此问题将导致无法启动 VIP,从而导致安装自身也出现故障;
建议通过 DNS,按round-robin方式将 SCAN 名称(11gR2 和更高版本)至少解析为 3 个 IP 地址,无论集群大小如何;
为避免名称解析出现问题,请确保 HOSTS 文件和 DNS 中提供了 VIP 与公共主机名。
1.4,网络接口必须在所有节点上使用相同的名称(如 eth1 -> eth1 支持 VIP,eth2 -> eth2 支持专用私网网络);
网络接口卡 (NIC) 名称中不得包含 “.” 。
1.5,私网使用 Jumbo Frames 是提高 Cache Fusion 操作性能的最佳实践。请参考MOS Document 341788.1
1.6,对私网使用non-routable的网络地址;A 类:10.0.0.0 到 10.255.255.255,B 类:172.16.0.0 到 172.31.255.255,C 类:192.168.0.0 到 192.168.255.255。有关其他信息,请参考MOS RFC1918 和 Document 338924.1
请确保根据速度、双工等正确配置网络接口。可用于监视和测试网络的各种工具有:ethtool、iperf、netperf、spray 和 tcp。请参考MOS Document 563566.1.
1.7,为避免公网或私网出现单一故障点,Oracle 强烈建议在每个集群节点上配置公共网络接口卡 (Network Interface Card, NIC) 和私网 NIC 的冗余集。请参考MOS Document 787420.1。 从 11.2.0.2 开始,Oracle Grid Infrastructure 可为私网(不是公网)提供冗余和负载均衡,对于 11.2.0.2(必须使用 11.2.0.2 Database),这是 NIC 冗余的首选方法。更多信息,请参考MOS Document 1210883.1。
注意: 如果使用 11.2.0.2 Redundant Interconnect/HAIP 功能,目前要求所有私网要在不同的子网上。如果全部接口在同一个子网上,且从路由表的第一个 NIC 中拔出电缆,则将发生GI stacks重启或节点重启的情况。有关此要求的技术说明,请参见MOS Document 1481481.1。
如果希望对发现硬件的可预测性更强,请将 HBA 和 NIC 卡插入 Grid 中每台服务器上的同一对应插槽中。
1.8,私网连接需要使用交换机,或冗余交换机(不支持交叉线直连)。
1.9,由于在交换机上部署私有网络(甚至在使用 VLAN 时)可能会使私网链路在大型 IP 网络拓扑中遭遇拥堵并变得不稳定,因此强烈建议为私网使用专用冗余交换机。如果在 VLAN 上部署私网,则在 VLAN 和non-routable的子网之间应该有一个 1:1 映射,并且 VLAN 不应该跨越多个 VLAN(已标记)或多个交换机。此环境中的部署问题包括在大型 IP 网络拓扑更改时的“Spanning Tree ”环、可能导致数据包洪流的不对称路由以及缺乏对 VLAN/端口的细粒度监视。
1.10,考虑对有高流量要求的工作负载的私网使用 Infiniband技术。Infiniband 还可以通过降低延迟来提高性能。实施 Infiniband 后,可以使用 RDS 协议进一步降低延迟。
1.11,在12.1.0.1 ,集群公网支持IPv6,而集群私网必须使用IPv4。从12.2.0.1开始,IPV6已经完全支持公网以及私网了;
对于Grid Infrastructure版本 11.2.0.2,私网必须在子网 230.0.1.0支持多播传输(multicast)。Oracle Grid Infrastructure 11.2.0.2 的 Patch: 9974223 (包含在 GI PSU 11.2.0.2.1 和更高版本中)对私网上的 224.0.0.251 多播地址启用了多播功能。必须允许这两个地址中的其中一个所对应的私网使用多播(假设已应用补丁程序)。MOS Document 1212703.1 中提供了测试多播功能的其他信息和程序。
二、磁盘使用注意事项
2.1,不要向磁盘组中添加大于 2 TB 的磁盘。请参考 Document 6453944.8。如果 ASM 磁盘组中的 LUN 大于 2TB,则可能会发生 ORA-15196(ASM 块损坏)。修复这个问题后,如果指定的磁盘大于 2TB,将发生 ORA-15099。无论是否存在 asmlib 这个问题都会发生。
2.2,总之,您可能要运行“alter diskgroup <DG_NAME> check all repair”以验证和修复所有升级后的磁盘组。
2.3,在 11g 中,默认对 ASM 实例启用 Automatic Memory Management (AMM),即使没有设置 MEMORY_TARGET 参数。大多数环境使用 MEMORY_TARGET 的默认值并不能使满足要求,建议设置MEMORY_TARGET为1536M。如果在您的 ASM 实例中遇到 ORA-4031 错误,可能需要调整 AMM 设置。请参考MOS Document 1370925.1 (ASM Instances Are Reporting ORA-04031 Errors),了解如何正确设置以避免共享池耗尽。
在 11g 环境中,如果多个数据库共享同一个 ASM 实例,可能需要修改 ASM processes 参数。根据经验法则,ASM 的最佳进程数为 150 个。
2.4,对使用两个或多个 HBA 或 Initiator 的存储阵列,多路径软件通过这些HBA 实现对这些阵列的多路径存取。如果可能,请使用伪设备(多路径 I/O)作为 ASM 的 diskstring。比如:EMC PowerPath、Veritas DMP、Sun Traffic Manager、Hitachi HDLM、IBM SDDPC、Linux 2.6 Device Mapper。这对 I/O 的负载均衡和故障转移非常有用。
2.5,RAC 与 NFS 一起使用时,请确保对 NFS 磁盘使用正确的 mount 选项。MOS Document 359515.1 中详细介绍了针对各个平台的 mount 选项。
2.6,ASM 是存储 Oracle Database 目前和未来的发展方向。也就是说,强烈建议在 RAC 环境中使用 ASM(而不是使用其它的集群文件系统),这是最佳实践。使用 Oracle RAC 标准版时,数据文件存储需要使用 ASM。
2.7,请确认客制化ASM Diskstring 以便优化ASM 磁盘发现时间,请参考MOS Document 1608549.1 Improving ASM Disk Discovery (ASM_DISKSTRING) Time Best Practices.
建议保持 ASM 磁盘组不超过两个,一个用于存储数据文件,一个用于闪回区(flash recovery area),而且每个磁盘组位于不同的物理磁盘。RAID 存储阵列 LUN 可作为 ASM 磁盘,以最小化 OS 中显示的 LUN 个数。
每个 ASM 磁盘组上最少要有四个大小和性能相同的 LUN(每个 LUN在不同的RAID 组),以确保性能最优。
2.8,对于 11gR2以及后续版本,不应为 Grid Infrastructure 环境设置 TNS_ADMIN 环境变量,因为它会导致 oraagent 无法维护 listener配置文件。TNS_ADMIN 也可能会影响 Clusterware 启动、停止和监控 listener 的能力。
2.9,应该为listener配置 remote listener进行交叉注册以支持工作负载重定向和负载均衡,从而允许在 RAC 集群中分发服务连接请求。通过此配置,每个 listener都会知道是哪个实例在处理特定服务以及当前给定的数据库实例上有多少负载。这让客户端可以在 listener之间对要在服务级别进行管理的工作负载进行连接请求的负载均衡。
2.10,在 11gR2 之前,LOCAL_LISTENER 参数应该指向正在运行特定数据库实例的本地系统 listener的 VIP地址。对于 11gR2以及后续版本,LOCAL_LISTENER 参数应设置为其默认值,以允许 oraagent 根据 OCR 中存储的 listener配置正确设置参数。
一般而言,每个 RAC 节点(不包括 SCAN)仅需要一个 listener为给定集群上运行的所有数据库处理连接。如果需要或要求在每个集群节点上使用多个 listener,则务必在 OCR 上注册这些额外的 listener,以确保这些额外 listener的 HA 和正确管理。
三、其它
3.1,对于 11gR2(默认情况下禁用 NUMA)之前的版本,除非明确要求并已经过测试,请确保禁用 NUMA(Non Uniform Memory Architecture)功能,因为根据报告显示,启用 NUMA 后会出现问题。
3.2,阅读并遵循 XA 和 RAC 的最佳实践指南,以避免XA 事务被拆分到多个RAC 实例的问题。请参考: http://www.oracle.com/technetwork/database/enterprise-edition/bestpracticesforxaandrac-128676.pdf 和 http://www.oracle.com/technetwork/database/clustering/overview/distributed-transactions-and-xa-163941.pdf
3.3,从运行数据库的 RDBMS 主目录中使用 SRVCTL 注册并管理数据库资源。资源注册必须由拥有 RDBMS 软件的 OS 用户执行。




