《VMware+RHEL5+Oracle 10g安装RAC的问题》
一、引言
在数据库技术领域,Oracle Real Application Clusters(RAC)因其高可用性和可扩展性被广泛应用于企业级环境。通过VMware虚拟化平台部署RHEL5(Red Hat Enterprise Linux 5)并安装Oracle 10g RAC,既能降低硬件成本,又能模拟真实生产环境进行测试。然而,这一过程涉及多节点配置、共享存储设置、网络通信优化等复杂环节,容易因环境差异或操作疏忽导致安装失败。本文将系统梳理安装过程中常见问题,并提供解决方案。
二、环境准备与配置
1. VMware虚拟化配置
在VMware Workstation或ESXi中创建两个虚拟机(Node1和Node2),需满足以下条件:
- 操作系统:RHEL5 64位版本(需安装完整开发包)
- CPU:至少2核,启用Intel VT-x或AMD-V虚拟化支持
- 内存:每节点建议4GB以上
- 网络:配置双网卡(公共网络和私有网络,用于节点间通信)
- 磁盘:至少3块虚拟磁盘(系统盘、OCR盘、表决盘)
关键配置步骤:
# 修改/etc/sysconfig/network-scripts/ifcfg-eth1(私有网络)
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.10 # Node1私有IP
NETMASK=255.255.255.0
2. RHEL5系统优化
(1)内核参数调整
# 编辑/etc/sysctl.conf
kernel.shmmax = 4294967295 # 内存一半,单位字节
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
(2)用户与组配置
# 创建安装用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
(3)依赖包安装
# 使用yum安装必要组件
yum install -y binutils compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel \
ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat
三、共享存储配置
1. 虚拟共享磁盘创建
在VMware中为两个节点添加相同大小的虚拟磁盘(建议OCR盘200MB,表决盘500MB,数据盘10GB以上),需确保:
- 磁盘类型为"虚拟",而非"物理"或"RDM"
- 磁盘文件路径在两节点间保持一致
- 使用"持久化"模式避免快照影响
2. ASM磁盘发现配置
# 创建/etc/sysconfig/oracleasm配置文件
ORACLEASM_SCANBOOT=yes
ORACLEASM_UID=oracle
ORACLEASM_GID=oinstall
ORACLEASM_SCANEXCLUDE="sd[a-z]" # 排除系统盘
3. 磁盘初始化与权限设置
# 使用fdisk创建分区并标记为0x8E(Linux LVM)
# 执行以下命令初始化ASM磁盘
/etc/init.d/oracleasm createdisk OCR /dev/sdb1
/etc/init.d/oracleasm createdisk VOTE /dev/sdc1
/etc/init.d/oracleasm createdisk DATA /dev/sdd1
四、Oracle 10g RAC安装问题与解决
1. 集群验证失败(CVU)
(1)问题现象:运行cluster verify时提示"Node connectivity test failed"
(2)原因分析:
- 私有网络未正确配置
- 防火墙未关闭或SELinux启用
- /etc/hosts文件不一致
(3)解决方案:
# 统一/etc/hosts配置(两节点相同)
127.0.0.1 localhost localhost.localdomain
192.168.1.10 node1-priv
192.168.1.11 node2-priv
192.168.2.10 node1
192.168.2.11 node2
# 临时关闭防火墙和SELinux
service iptables stop
setenforce 0
2. OCR配置错误
(1)问题现象:ocrconfig -export命令失败,提示"OCR device not found"
(2)原因分析:
- OCR磁盘未正确初始化
- ocrconfig.loc文件路径错误
- 权限不足(需oracle用户执行)
(3)解决方案:
# 检查OCR磁盘状态
/etc/init.d/oracleasm listdisks
# 重新配置OCR(需在所有节点执行)
ocrconfig -local -overwrite -replace ocr /dev/oracleasm/disks/OCR
3. 表决盘(Voting Disk)故障
(1)问题现象:crsctl check crs命令显示"Voting file not accessible"
(2)原因分析:
- 表决盘未在所有节点挂载
- 磁盘权限错误(需640权限,组为oinstall)
- CRS日志显示"IO Error"(可能为磁盘损坏)
(3)解决方案:
# 检查表决盘状态
crsctl query css votedisk
# 重新添加表决盘(需先删除原有配置)
crsctl delete css votedisk /dev/oracleasm/disks/VOTE
crsctl add css votedisk /dev/oracleasm/disks/VOTE -force
4. 数据库实例启动失败
(1)问题现象:srvctl start instance -d racdb -i racdb1命令报错"ORA-12514"
(2)原因分析:
- 监听器未启动
- tnsnames.ora配置错误
- 资源限制(ulimit -n不足)
(3)解决方案:
# 检查监听状态
lsnrctl status LISTENER_NODE1
# 修改/etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
# 重启CRS资源
crsctl stop crs
crsctl start crs
五、高级问题处理
1. 时间同步问题
RAC要求节点间时间差小于1秒,需配置NTP服务:
# 安装NTP
yum install -y ntp
# 配置/etc/ntp.conf(使用外部时间源)
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
# 启动服务并设置开机启动
service ntpd start
chkconfig ntpd on
2. 内存不足错误(ORA-04031)
(1)问题现象:数据库启动时提示"unable to allocate 4096 bytes of shared memory"
(2)解决方案:
- 增加/dev/shm大小(临时方案):
mount -o remount,size=2G /dev/shm
- 永久修改/etc/fstab:
tmpfs /dev/shm tmpfs defaults,size=2G 0 0
- 调整SGA参数(在spfile中设置sga_target)
3. 网络分区(Network Partition)
(1)问题现象:CRS日志显示"CSSD state change to UNRESOLVED"
(2)原因:私有网络中断或心跳超时(默认20秒)
(3)解决方案:
# 调整心跳超时时间(需修改css.misc文件)
misccfg="TIMEOUT_FOR_REBOOT=120"
# 重启CSS服务
crsctl stop css
crsctl start css
六、最佳实践建议
1. 安装前检查清单
- 验证所有节点/etc/hosts文件一致性
- 确认共享磁盘在ASM中可见
- 检查防火墙/SELinux状态
- 运行cluster verify工具预检
2. 安装过程优化
- 使用静默安装方式减少人为错误
- 记录所有节点的安装日志($ORACLE_BASE/cfgtoollogs)
- 分阶段验证(存储→网络→CRS→数据库)
3. 故障排查方法论
- 从CRS日志($GRID_HOME/log/node1/cssd/ocssd.log)入手
- 使用crsctl命令集诊断资源状态
- 对比成功节点与失败节点的配置差异
七、结论
在VMware+RHEL5环境下部署Oracle 10g RAC需要严谨的环境配置和故障处理能力。通过系统化的方法解决共享存储、网络通信、权限管理等关键问题,可显著提高安装成功率。建议在实际生产环境部署前,在虚拟化平台充分测试并建立完整的回滚机制。
关键词:VMware虚拟化、RHEL5、Oracle 10g RAC、共享存储、ASM磁盘、CVU验证、OCR配置、表决盘故障、网络分区、静默安装
简介:本文详细阐述了在VMware虚拟化环境中基于RHEL5系统安装Oracle 10g RAC集群的完整流程,重点分析了共享存储配置、集群验证、OCR/表决盘管理、网络通信优化等关键环节的常见问题及解决方案,提供了从环境准备到故障排查的系统性指导。